次のコードの結果は非常に遅いです。私は何時間もそれをトラブルシューティングしようとしていましたが、結果はありませんでした。私は関連するコードだけを含んでいます。mysql_fetch_arrayでwhileループを使用した場合の結果が遅い
編集:
私は、データベースからIDを選択し、それに関連付けられているすべての画像を取得するためにそのIDを使用しようとしています。私はそのイメージのグループを1つに絞り込んでいます。私はそのイメージを持っていれば、それを外部ファイルを通してサイズ変更しています。
問題を特定するためにコードのさまざまな部分を削除しようとしましたが、2番目のクエリでスローダウンが発生しているように見えますが、その理由はわかりません。ご協力いただきありがとうございます。
$getworks = mysql_query ("SELECT a_id from artists where display_works = '1' and active = '1' order by project_year desc, fullname desc");
while ($getworksrow = mysql_fetch_assoc($getworks)){
$totalimages=1;
$addstyle = "";
$id = $getworksrow["a_id"];
$getimages = mysql_query ("SELECT a_id, image_id from images where a_id = '". $id ."' order by position asc LIMIT 1");
$getimagesrow = mysql_fetch_assoc($getimages);
foreach ($getimagesrow as $getimagesrows){
extract($getimagesrow);
if($totalimages > 1){ $addstyle = 'style="display:none;"'; }
else {
$myimagename = "http://artist.com/$a_id/images/$image_id" . "_large.jpg";
list($width, $height, $type, $attr) = getimagesize("$myimagename");
$myimagename = "http://artist.com/artists/resize.php/$a_id/images/$image_id" . "_large.jpg?resize(157x2000)";
if($getworksrows["layout"] == "vert"){$pl = "_vertical";}else if($getworksrows["layout"] == "website"){$pl = "-s";}else if($getworksrows["layout"] == "video"){$pl = "_video";}else{$pl = "_horizontal";}
echo "<li class='thumbnail_container' $addstyle> <a class='thumbnail' href=\"../works$pl.php?a_id=" . $getworksrows["a_id"] . "\"><span><img src=\"$myimagename\" /></span>\n</a></li>\n";
}
$totalimages++;
}
}
リモートURLの 'getimagesize'が遅い可能性があります。それをスピードアップする方法はないかもしれません。結果をどこかにキャッシュしていますか? –
あなたの質問、あなたが何をしようとしているのかもっと具体的にしてください。 –
入れ子のSQLクエリは常に大きなパフォーマンスオーバーヘッドです。この場合、1つのイメージクエリにつき1を発行します。あなたはJOINについて学ぶ) –