1

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

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

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

4

3 回答 3

3

完成此任务的最佳方法(最可靠和最干净)是使用完成工作的服务器端脚本和客户端 AJAX 脚本,该脚本将轮询另一个将返回状态的服务器端脚本。在网络中,数据被缓存在不同的层次上,以达到优化的目的,因此很难做到你想要的。

于 2010-06-24T06:47:49.983 回答
1

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

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

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

于 2010-06-24T06:46:44.390 回答
0

PHP 的output_buffering默认设置为 0(即关闭),但毫无疑问您已经对此进行了调查。

我认为@Palantir 的建议可能是一个不错的建议:将日志条目写入本地文件,然后将该文件(或其部分)提供给客户端;客户可以根据您的需要经常重新请求。这还具有不填满浏览器缓冲区的优点(即,您不应该只是无限期地向客户端发送日志数据)。

但这不是你的问题。

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

<?php
while (TRUE)
{
    echo 'x';
    flush();
    sleep(1);
}
?>
于 2010-06-24T07:10:51.290 回答