如何在每次“回声”调用后刷新输出?
我有一个php脚本,它只生成到客户端的日志。
当我回显某些东西时,我希望它能即时转移到客户端。
(因为在处理脚本时,页面是空白的)
我已经玩过和,但它们不起作用。ob_start()
ob_flush()
最好的解决方案是什么?
PS:在通话结束时放一个冲洗有点脏...echo
编辑:答案都不起作用,PHP或Apache错误?
我有一个php脚本,它只生成到客户端的日志。
当我回显某些东西时,我希望它能即时转移到客户端。
(因为在处理脚本时,页面是空白的)
我已经玩过和,但它们不起作用。ob_start()
ob_flush()
最好的解决方案是什么?
PS:在通话结束时放一个冲洗有点脏...echo
编辑:答案都不起作用,PHP或Apache错误?
我遇到了同样的问题,手册中发布的示例之一起作用了。必须将字符集指定为此处已提到的海报之一。http://www.php.net/manual/en/function.ob-flush.php#109314
header( 'Content-type: text/html; charset=utf-8' );
echo 'Begin ...<br />';
for( $i = 0 ; $i < 10 ; $i++ )
{
echo $i . '<br />';
flush();
ob_flush();
sleep(1);
}
echo 'End ...<br />';
编辑:
我正在阅读手册页面上的评论,并遇到了一个错误,指出这不起作用,以下是解决方法:ob_implicit_flush
ob_end_flush();
# CODE THAT NEEDS IMMEDIATE FLUSHING
ob_start();
如果这不起作用,那么甚至可能发生的事情是,在服务器构建足够的字符来发送它认为值得发送的数据包之前,客户端不会从服务器接收数据包。
旧答案:
您可以使用ob_implicit_flush
这将告诉输出缓冲关闭缓冲一段时间:
ob_implicit_flush(true);
# CODE THAT NEEDS IMMEDIATE FLUSHING
ob_implicit_flush(false);