在php循环中睡眠和刷新

时间:2011-10-12 08:13:22

标签: php loops sleep

我有以下代码:

<?php
$initialSleep = ( isset($_GET['is']) ) ? $_GET['is'] : 0; // seconds - default 0 if not specified
$loopCount = ( isset($_GET['lc']) ) ? $_GET['lc'] : 1; // default 1 if not specified
$loopSleep = ( isset($_GET['ls']) ) ? $_GET['ls'] : 1; // seconds - default 0 if not specified

sleep($initialSleep);

for ( $i = 0; $i < $loopCount; $i++) {
    sleep($loopSleep);
    echo time();
    ob_flush();
}
?>

我的问题是不是让时间()按时间间隔回响,而是得到一个等于loopCount * loopSleep的总延迟,然后所有内容立刻回响。我已经看过关于这类事情的其他帖子,并且使用flush()似乎可以解决大多数人 - 不过我。

任何帮助表示赞赏

2 个答案:

答案 0 :(得分:2)

试试这个:

ob_start();
for ( $i = 0; $i < $loopCount; $i++) {
    sleep($loopSleep);
    echo time();
    ob_flush();
    flush();
}

答案 1 :(得分:0)

如果您的网络服务器认为它会以这种方式获得更有效的传输,那么它可能会自行缓冲。也许你可以关闭它,但它可能不是生产中最有效的。