在PHP循环中休眠和刷新


sleep and flush in php loop

我有以下代码:

<?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();
}
?>

我的问题是不是让time()每隔一段时间就回显一次,而是得到一个等于loopCount * loopSleep的总延迟,然后所有东西都一次回显出来。我看过其他关于这类事情的帖子,使用flush()似乎可以解决大多数人的问题-尽管不是我。

感谢您的帮助

试试这个:

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

你的web服务器可能会缓冲自己,如果它认为它会得到更多efficiënt传输的方式。也许你可以关闭它,但它在生产中可能不是最有效的。