0

すべて正常に動作しますが、唯一の問題は読み込みが非常に遅いことです。265 枚の画像を含むページを読み込むのに 7 秒かかります。画像はリモート サーバー上になく、サムネイルです。それらは実際の高さ/幅でも表示されているため、サーバーはそれらのサイズを変更する必要はありません。

ページの前の繰り返しでは、すべての画像にも getimagesize() 関数があり、問題なく読み込まれたため、これは getimagesize() であってはなりません。

問題になる可能性があると私が見つけることができる唯一のものは、データベースです。これはセットアップです:

表のアルバム:

| | ID | ナーム | urlnaam | 活動 |


表の写真:

| | ID | URL | 外線 | 説明 | アルブミン |

したがって、写真のアルバム ID はアルバムの ID にリンクされます。コードは次のとおりです。

$album = mysql_real_escape_string($_GET['fx2']);
mysql_select_db('user_fotos');
$i = 0;
$sql = mysql_query("SELECT a.naam, b.url, b.ext, b.description, b.id FROM albums AS a LEFT JOIN fotos AS b ON a.id = b.albumid WHERE a.urlnaam = '$album'");
while($row = mysql_fetch_assoc($sql)){
    if($i == 0){
        echo "Album: {$row['naam']}<br />";
        echo "<table><tr>";
    }
    if($i % 4 == 0){echo "</tr><tr>";}
    echo "<td align='center'>";
    $photourl = "http://www.mysite.com/fotos/$album/thumbs/" . $row['url'] . $row['ext'];
    $dimensions = getimagesize($photourl);
    $breedte = $dimensions[0];
    $lengte = $dimensions[1];
    if($breedte == '120'){$aspect="width='120px' height='{$lengte}px'";}else{$aspect="height='120px' width='{$breedte}px'";}
        echo "<div class='imageHolder' style='width:{$breedte}px; height:{$lengte}px;' onClick=\"parent.location='$album/{$row['id']}'\" /><img $aspect src='http://www.mysite.com/fotos/$album/thumbs/" . $row['url'] . $row['ext'] . "' alt='{$row['description']}' /></div>";
        echo "</td>";
        $i++;
}
echo "</tr></table>";
4

3 に答える 3

2

他の人や私が言及しているように、リモート URL から imagesize() を取得すると、スクリプトの速度が低下する画像を取得する必要があります。アルバム変数の XSS 問題: これを試してみてください。同じ結果が得られますが、はるかに高速です。

  <?php 
    $album = mysql_real_escape_string($_GET['fx2']);
    mysql_select_db('user_fotos');

    $sql = mysql_query("
    SELECT a.naam, b.url, b.ext, b.description, b.id 
    FROM albums AS a 
    LEFT JOIN fotos AS b ON a.id = b.albumid 
    WHERE a.urlnaam = '$album'");

    $i = 0;
    while($row = mysql_fetch_assoc($sql)){
        if($i == 0){
            echo "<p>Album: {$row['naam']}</p>";
            echo "<table><tr>";
        }
        if($i % 4 == 0){echo "</tr><tr>";}
        echo "<td align='center'>";
        echo "<div class='imageHolder' onClick=\"parent.location='".htmlentities($album)."/{$row['id']}'\" /><img src='./fotos/".htmlentities($album)."/thumbs/" . $row['url'] . $row['ext'] . "' alt='{$row['description']}' /></div>";
        echo "</td>";
        $i++;
    }
    echo "</tr></table>";
    ?>
于 2012-04-07T15:06:39.530 に答える
0

画像自体も動的に生成されていないと思いますか?getimagesize()画像がデータベースに読み込まれるときに実行し、幅/高さの列を作成して、高価なファイル操作を節約することをお勧めします。また、いくつかの html キャッシュを実行します。

于 2012-04-07T14:59:59.980 に答える
0

getimagesize($photourl) スクリプトが遅くなる可能性があります

あなたのクエリは正常です

スクリプトを簡単に確認できます。

PHPコードで幅と高さをconstにして、スクリプトを再度実行すると、スクリプトの実行が遅くなる行を知ることができます

于 2012-04-07T15:05:56.800 に答える