为什么flush()不立即执行数据? PHP

时间:2016-05-03 21:15:54

标签: php flush

我正在编写一个PHP脚本但却陷入flush()函数。这是我的剧本:

<?php
    echo "1";
    flush();
    sleep(5);
    echo "2";
?>

我希望我的脚本发送'1',然后等待5秒,然后发送'2'。但相反,脚本等待5秒,然后发送'12'。我正在寻找过去几个小时的答案,但我找不到适合我的答案。

2 个答案:

答案 0 :(得分:5)

首先

  

flush()可能无法覆盖Web服务器的缓冲方案,并且它对浏览器中的任何客户端缓冲都没有影响。

其次

  

它也不会影响PHP的用户空间输出缓冲机制。这意味着如果使用ob输出缓冲区,则必须同时调用ob_flush()和flush()来刷新ob输出缓冲区。

http://php.net/manual/en/function.flush.php

至少,请尝试拨打ob_flush()

答案 1 :(得分:0)

如果您将其与某种网络服务器一起使用,则还需要使用ob_flush()。并且ob_flush必须始终在flush()之前。

所以你的代码是:

<?php
    echo "1";
    ob_flush();
    flush();
    sleep(5);
    echo "2";
?>