如何在PHP中立即打印回声?

时间:2009-06-10 19:15:21

标签: php flush

默认情况下,在整个页面执行完毕之前,它不会打印出任何内容。

是否有任何功能可以立即冲洗掉?

但不是多次调用ob_end_flush(),这不是我想要的。

希望你们有我?

4 个答案:

答案 0 :(得分:8)

如果打开输出缓冲,则刷新它是向浏览器输出任何内容的唯一方法。如果你想立即输出然后转动输出缓冲。如果这不在您的控制范围内,您可以在脚本的srart处调用ob_end_flush(),这将关闭输出缓冲。然而,没有办法让一些消息通过,有些则没有(没有编写自定义echo / print函数)

调用ob_end_flush()将刷新并关闭最顶层的输出缓冲区。要确保关闭所有输出缓冲区并刷新,您可以轻松地执行此操作:

while (@ob_end_flush());

答案 1 :(得分:6)

这取决于您的网络服务器。调用flush将刷新当前缓冲区打开的输出,但是,如链接页面上所述:

  

flush()对Web服务器或客户端浏览器的缓冲方案没有影响。因此,您需要同时调用ob_flush()和flush()来刷新输出缓冲区。

     

多个服务器,尤其是Win32上的服务器,仍会缓冲脚本的输出,直到它终止,然后才将结果传输到浏览器。

     

像mod_gzip这样的Apache服务器模块可能会自行缓冲,这会导致flush()不会立即将数据发送到客户端。

答案 2 :(得分:1)

您可以在开发/测试服务器上关闭输出缓冲。更改php.ini配置文件中的output_buffering变量。

答案 3 :(得分:0)

如果在没有要刷新的缓冲区时,ob_end_flush()将在脚本顶部使用,则会发出通知。如果您计划设置cookie或标头,这可能是一个问题。我发现它不会影响我的共享服务器(Rackspace Reseller)上的缓冲。