停止PHP输出缓冲

时间:2010-06-24 06:42:55

标签: php apache output-buffering

我需要显示php脚本的连续输出。该脚本将保持在从设备打印日志数据并休眠的循环中。我的问题是在脚本完成之前我无法让PHP或Apache输出数据。

我已经尝试了所有用于刷新输出缓冲区的命令,我已经阅读了PHP和Apache的配置文件,寻找某种类型的缓冲来禁用。

这可能与Windows上的Apache和PHP有关,还是我应该考虑其他平台?

3 个答案:

答案 0 :(得分:3)

实现这一目标的最佳方法(最可靠和最干净)是使用服务器端脚本完成工作,以及客户端AJAX脚本将轮询另一个将返回状态的服务器端脚本。在Web中,数据在不同级别进行缓冲,以实现优化,因此很难完成您想要的任务。

答案 1 :(得分:1)

使用这些刷新你已经使用过的输出缓冲区命令,然后输入一个1024字节长的HTML注释。因为它最有可能是浏览器问题,而不是服务器。

啊,看起来你正在寻找COMET应用程序

http://www.zeitoun.net/articles/comet_and_php/start

答案 2 :(得分:0)

PHP的output_buffering设置默认为0(即关闭),但毫无疑问你会调查它。

我认为@Palantir's suggestion可能是一个好的:将日志条目写入本地文件,然后将该文件(或其中的一部分)提供给客户端;客户可以经常重新请求。这样做的好处是不会填满浏览器的缓冲区(即你不应该只是不断地将日志数据发送到客户端 ad infinitum )。

但这不是你的问题。

您可以使用如下的简单脚本重现输出缓冲问题吗?

<?php
while (TRUE)
{
    echo 'x';
    flush();
    sleep(1);
}
?>