PHP flush在调用时不打印输出


PHP flush not printing output when called

我想在暂停前后回显一些输出。

这是我的代码:

<?php
class AsyncOperation extends Thread {
  public function __construct(){
  }
  public function run(){
    sleep(11);
echo "Running "; 
  }
 }
 echo "Its Here";
 flush();

 $thread = new AsyncOperation();
 $thread->start();
?>

这应该显示输出"It Here"。。。。11秒后。。。应显示"正在运行">

但浏览器显示它就像"在这里运行",并在11秒后显示整个字符串。

我不知道为什么会发生这种事。请帮我解决这个问题,我已经在这里呆了两个晚上了。

有解决方案吗??

您需要输出缓冲

我不确定这在所有浏览器上都有效,但这在上完全有效

  • 谷歌的Chrome浏览器
  • Mozilla FireFox
  • Internet Explorer
  • Opera

<?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();
?>

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