在PHP中禁用输出缓冲

Apr*_*pos 5 php apache xampp buffering

我有一个任务对象和__deconstruct(),它意味着在页面的其余部分已经加载后运行一些较长的清理任务.不幸的是,它会缓冲输出,直到任务完成后才会发送它(任务中没有打印任何内容).

我通过http://www.php.net/flush阅读并尝试了所有的建议.显然我已经尝试在php.ini中禁用output_buffering.我已禁用deflate_module,zlib压缩已关闭,没有mod_gzip.调用flush()或ob_flush()无效,也无法启用implicit_flush.

我只是在Windows Server 2008 R2下运行XAMPP(目前是apache 2.2.17,php 5.3.4).PHP正在作为模块运行.

是的,我可以设置一些小的AJAX黑客来运行任务管理器,甚至设置一个计划任务来运行这个特定的任务,但输出缓冲也是其他地方的问题.只是有时它会消失.

从一个类似的线程,有人建议看看以下将做什么:

<?php
while (TRUE)
{
    echo 'x';
    flush();
    sleep(1);
}
?>
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,页面在达到最大执行时间之前不会显示任何内容,此时它会刷新缓冲区.

这已经变得非常令人沮丧.任何人都有什么想法可能导致它缓冲?

Bra*_*rad 4

您仅发送少量数据。浏览器有自己的缓冲区,它可以基于已接收元素的字节数,也可以基于其他内容。

简而言之,您对此无能为力。缓冲发生在客户端,而不是服务器端。您可以尝试在xs 之前发送更多数据。

您可以使用Wireshark或类似工具通过数据包嗅探服务器和浏览器之间的连接来证明这一点。