默认情况下,在整个页面执行完毕之前,它不会打印出任何内容。
是否有任何功能可以立即冲洗掉?
但不是多次调用ob_end_flush()
,这不是我想要的。
希望你们有我?
答案 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)