1

我正在使用 while 循环来显示最后 30 张专辑缩略图,但正如您所知,一次 30 张照片会减慢网页加载时间,我希望网页完全加载后我想以 5 秒的间隔加载这 30 张照片。网页完全加载 5 秒后将加载前 5 张照片,然后在 5 秒间隙后再次加载下 5 张照片我知道我可以使用 6 个查询来执行此操作,但为什么要浪费服务器资源,所以我想要一个查询但加载为每个用户方便。这是我的 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 更方便)。例如,查看这个Lazy Loading jQuery 插件。

于 2013-03-19T16:34:13.770 回答
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 回答
1

您应该输出一些标记,其中包含图像的 URL 或 Javascript 可以从中重新创建 URL 的数据,然后,在客户端,您可以处理从该标记动态创建图像,有延迟等等。

于 2013-03-19T16:32:11.130 回答
1

在您的情况下,该页面仅在执行所有 PHP 之后才显示给用户,因此您不能指望 PHP 延迟某些显示。

正如已经提到的,您必须在客户端进行(可能在 Javascript 中)。一种方法是构造(使用 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 回答