PHP调用时不刷新输出

时间:2014-03-27 17:38:34

标签: php pthreads

我希望在暂停之前和之后回复一些输出。

这是我的代码:

<?php
class AsyncOperation extends Thread {

  public function __construct(){

  }

  public function run(){
    sleep(11);
echo "Running "; 

  }
 }
 echo "Its Here";

 flush();


 $thread = new AsyncOperation();

 $thread->start();

?>

这应该显示输出&#34;它在这里&#34; .... 11秒后......应该显示&#34;跑步&#34;

但是浏览器会显示它&#34; Running Here Here&#34;,并在11秒后显示整个字符串。

我不知道为什么会这样。请帮助我解决这个问题,我在这里遇到了最近2晚。

任何解决方案??

1 个答案:

答案 0 :(得分:3)

您需要输出缓冲......!

我不确定这适用于所有浏览器,但这完全适用于

  • Google的Chrome。
  • Mozilla FireFox
  • Internet Explorer

<?php
if (ob_get_level() == 0) ob_start();
class AsyncOperation
{
    public function run()
    {
        for ($i = 0; $i < 10; $i++) {
            echo "                   ";
            echo str_pad('', 4096) . "\n";
            # Flushing out..........!
            ob_flush();
            flush();
            sleep(1);
        }
        echo "Running ";
    }
}

echo "Its Here<br>";
$thread = new AsyncOperation();
$thread->run();
?>

我在run()循环下使用sleep(1)修改了您的for,与sleep(11)相同。