while循环输出有延迟

时间:2013-03-19 16:30:18

标签: php

我正在使用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 个答案:

答案 0 :(得分:2)

执行此操作的最佳方法是使用javascript(和jQuery以获得额外的便利)。例如,查看这个Lazy Loading jQuery插件。

答案 1 :(得分:1)

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

答案 2 :(得分: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;
    }
 ?>

答案 3 :(得分: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);