在 php 循环中睡眠并刷新
我有以下代码:
<?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,而不是每隔一段时间回显一次time(),然后所有内容立即回显。我看过其他关于此类事情的帖子,并且使用flush()似乎可以解决大多数人的问题——但不是我。
任何帮助表示赞赏
I have the following code:
<?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();
}
?>
My problem is the instead of getting the time() echoed out at intervals I get a total delay equal to loopCount * loopSleep and then everything echoes out at once. I have seen other posts about this sort of thing and using flush() seems to fix it for most people - not me though.
Any help appreciated
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
试试这个:
Try this:
如果您的网络服务器认为这样可以更有效地传输,则它可能会自行缓冲。也许您可以将其关闭,但它可能不是生产效率最高的。
Your webserver may buffer on it's own if it thinks it will get a more efficiënt transfer that way. Maybe you can turn this off but it's probably not the most efficient in production.