PHP sleep()执行序列同时回显

时间:2010-06-03 05:08:13

标签: php

我有以下内容:

echo time()."<br>";

sleep(1);
echo time()."<br>";

sleep(1);
echo time()."<br>";

我编写了上面的代码,意图回显time()."<br>" ln 1,echo time()."<br>" ln 4,等待最后一秒,然后回显最终的time()."<br>"。尽管在时间()之间的间隔时,bieng回显的时间是正确的,但是在每个睡眠功能的等待时间/参数的总和之后,所有的回声函数都是回声。

这是脚本的运行方式:

  • Excutes。
  • 等待2个secons。
  • 回波
        1275540664个
        1275540665个
        1275540666

注意被回显的time()中的正确增量。我的问题是为什么它没有表现出预期的回声,等待一秒钟,再次回声,等待最后一秒然后回声最后一个参数?

由于我的措辞,我知道我的问题有点令人困惑,但我会尽力回答有关此问题的任何评论,谢谢。

2 个答案:

答案 0 :(得分:2)

您已打开输出缓冲。

PHP更有效地缓冲输出并将其全部写入浏览器,而不是以小突发写入输出。所以PHP会缓冲输出并在最后一次发送它(或者一旦缓冲区达到一定的大小)。

您可以在每次调用echo后拨打flush()来手动刷新缓冲区(虽然我不建议这是一个“真正的”应用程序 - 但是我再也不建议调用常规应用中的sleep,或者!)。

答案 1 :(得分:0)

您通常可以使用ob_flush(),但绝对不可靠。不幸的是,没有其他选择。