PHP和Apache中的多个flush语句

时间:2014-04-15 11:07:08

标签: php ajax apache http flush

我'我正在使用XMLHttpRequest 2通过chunked事件获得onprogress响应并在浏览器中显示。一切似乎都很好,但我有点混乱。请考虑以下代码:

<?php 
    echo "I' am sending ";
    ob_flush();
    flush();

    echo "content to client.";
    ob_flush();
    flush();

这是向客户端发送PHP响应的非常标准的chunked方式。但是我希望将输出作为两个不同的块,一个包含第一个echo的结果,另一个包含第二个。但是我&#39;我得到了两个echo语句的组合块。当我在sleep(1)之后放置flush()时,一切似乎都正常。

我的问题是,在发送已经收到的块之前,是否有一些故意等待Web服务器端等待其他内容,或者是否有一些线程调度机制迫使Apache的网络层等待它。

修改

我忘了提到我已经禁用了网络服务器的输出缓冲,这意味着如果来自PHP的flush某些东西将被发送到浏览器。

非常感谢任何帮助。

感谢。

1 个答案:

答案 0 :(得分:0)

请参阅:http://www.icemelon.com/tutorials/20/Output_While_Script_Still_Running.htm

您可能会在此处看到浏览器输出缓冲。尝试添加:

for($k = 0; $k < 40000; $k++)
    echo ' ';

在你冲洗之前,为了填满浏览器的缓冲区并让它吐出你的输出。