1

while ループを使用して最新の 30 枚のアルバムのサムネイルを表示していますが、ご存知のように、一度に 30 枚の写真を表示すると Web ページの読み込み時間が遅くなります。最初の 5 枚の写真は、ウェブページの 5 秒後に完全に読み込まれ、次に 5 秒のギャップの後、次の 5 枚の写真が読み込まれます。6 つのクエリでこれを実行できることはわかっていますが、なぜサーバー リソースを浪費するので、1 つのクエリが必要ですが、次のように読み込みます。ユーザーごとに便利です。ここに私のwhileループがあります

     $res = mysql_query("SELECT * from `"tableA where cat='photos' order by created desc limit 30");
    while($row = mysql_fetch_array($res)) {
    $photo .= thumbnail($row,150);
        }

その後、どこでも $photo を呼び出すことができます

4

4 に答える 4

2

これを行う最善の方法は、javascript (さらに簡単にするために jQuery) を使用することです。たとえば、この遅延読み込みjQuery プラグインを確認してください。

于 2013-03-19T16:34:13.770 に答える
1

あなたの場合、ページはすべてのPHPが実行された後にのみユーザーに表示されるため、PHPが表示を遅らせることを期待することはできません。

すでに述べたように、クライアント側で行う必要があります(おそらくJavascriptで)。1つの方法は、(PHPを使用して)すべての画像URLを含むJavascript配列を作成し、適切な遅延でこの配列をループすることです。

サーバー側は次のようになります:(編集:tableAに「url」という名前の列が含まれていると仮定します)

$images = array();
$res = mysql_query("SELECT * from `tableA` where cat='photos' order by created desc limit 30");
while($row = mysql_fetch_array($res)) {
    $images[] = $row['url'];
}
echo json_encode($images);
于 2013-03-19T16:47:49.617 に答える
1

画像の URL または Javascript が URL を再作成できるデータのいずれかを含むマークアップを出力する必要があります。その後、クライアント側で、そのマークアップからの画像の作成をその場で処理できますが、遅延などがあります。

于 2013-03-19T16:32:11.130 に答える
1

これを試してください..クエリの引用符も少し修正しました..

<?php
$round =1; 
$res = mysql_query("SELECT * from `tableA` where `cat`='photos' order by created desc limit 30");
    while($row = mysql_fetch_array($res)) 
    {
        $photo .= thumbnail($row,150);
        if (($round % 5) == 0 ) { // action only happens when round is divisble by 5
            sleep(5); // wait 5 seconds
        }
        $round += 1;
    }
 ?>
于 2013-03-19T16:45:42.180 に答える