for($i = 0; $i < 5; $i++) {
echo $i . "\n";
sleep(1);
}
这是我运行的代码。 php CLI决定等待而不是每秒显示一个数字,而是在执行完所有操作后显示
0
1
2
3
4
为什么会发生这种情况,我该如何做到这一点&#34;实时&#34; ?
编辑:发现问题:因为我包含WP-Core(Wordpress)输出以某种方式缓冲,如果我删除wp-core就可以了。有关更多信息,当包含wp_core时,会有一些wp通知记录在单独的文件中。
答案 0 :(得分:1)
您需要禁用输出缓冲或刷新缓冲区。对于来自HTTP的请求,您实际上只需要ob,因为它允许您进行所有服务器端处理,而不必担心与客户端的连接。
for($i = 0; $i < 5; $i++) {
echo $i . "\n";
sleep(1);
flush();
ob_flush();
}
或者,如果您无法更改代码,则可以在CLI中完全禁用输出缓冲php.ini
output_buffering=Off
答案 1 :(得分:0)
Servers
通常缓冲服务器端脚本的输出,直到它足够输出尝试类似这样的东西。设置输出缓冲关闭和手动刷新缓冲区的组合。请注意implcit flush
行以及flush和ob_flush
行。
for ($i = 0; $i < 5; $i++) {
echo $i . "</br>";
sleep(1);
flush();
ob_flush();
}
有关ob-flush
的更多信息,请阅读http://php.net/manual/en/function.ob-flush.php