如何在每次“回声”调用后刷新输出?

2022-08-30 08:49:46

我有一个php脚本,它只生成到客户端的日志。
当我回显某些东西时,我希望它能即时转移到客户端。
(因为在处理脚本时,页面是空白的)
我已经玩过和,但它们不起作用。ob_start()ob_flush()

最好的解决方案是什么?

PS:在通话结束时放一个冲洗有点脏...echo

编辑:答案都不起作用,PHP或Apache错误?


答案 1

我遇到了同样的问题,手册中发布的示例之一起作用了。必须将字符集指定为此处已提到的海报之一。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 />';

答案 2

编辑:

我正在阅读手册页面上的评论,并遇到了一个错误,指出这不起作用,以下是解决方法: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);

推荐