默认情况下,在整个页面完成执行之前,它不会打印任何内容。
有什么功能可以让它马上冲掉吗?
ob_end_flush()
但不是通过多次调用,这不是我想要的。
希望你们得到我?
如果输出缓冲打开,那么刷新它是向浏览器输出任何内容的唯一方法。如果您想立即输出,请打开输出缓冲。如果这不在您的控制范围内,您可以在脚本的 srart 中调用 ob_end_flush() ,这将关闭输出缓冲。但是没有办法让某些消息通过,而有些则不能(不编写自定义回显/打印函数)
调用 ob_end_flush() 将刷新并关闭最顶层的输出缓冲区。要确保所有输出缓冲区都已关闭并刷新,您可以轻松地执行以下操作:
while (@ob_end_flush());
这将取决于您的网络服务器。调用flush将刷新当前打开的任何缓冲区的输出,但是,正如链接页面上所说:
flush() 对 Web 服务器或客户端浏览器的缓冲方案没有影响。因此,您需要调用 ob_flush() 和 flush() 来刷新输出缓冲区。
一些服务器,尤其是在 Win32 上,仍然会缓冲脚本的输出,直到它在将结果传输到浏览器之前终止。
Apache 的服务器模块(如 mod_gzip)可能会自己进行缓冲,这将导致 flush() 不会导致数据立即发送到客户端。
您可以关闭开发/测试服务器上的输出缓冲。更改 php.ini 配置文件中的output_buffering变量。
如果在没有要刷新的缓冲区时在脚本顶部使用 ob_end_flush() ,它将抛出一个通知。如果您打算设置 cookie 或标头,这可能是一个问题。我发现它不会影响我的共享服务器(Rackspace Reseller)上的缓冲。