PHP被阻塞情况下输出数据 ob_flush不管用

ob_start();
for($i=0;$i<20;$i++){
    //...耗时的操作 3秒钟
    echo "ABC";
    ob_flush();
}

运行的时候,需要1分钟才能显示ABC,怎样一条条的出来,3秒钟得出来一次呀?
谢谢解答在线等~

@ob_flush();
for($i=0;$i<20;$i++){
//...耗时的操作 3秒钟
echo "ABC" . str_repeat(' ', 256); //输出足以使浏览器缓冲区充满的数据(IE必须)
ob_flush(); //推出用户缓存
flush(); //推出系统缓存
}

这是利用系统的瑕疵产生的效果,应避免使用
建议用 ajax 轮询,或 websock 推送(如果你的用户群都支持的话)

参考 [Calling ob_flush() and flush(), yet browser doesn't show any output until script finishes][1]
<?php
header( 'Content-type: text/html; charset=utf-8' );
for($i=0;$i<20;$i++){
//...耗时的操作 3秒钟
echo 'ABC';
ob_flush();
flush();
}

参考是 Calling ob_flush() and flush(), yet browser doesn't show any output until script finishes

如果还是不能显示,可以先输出2048 Byte空格,因为有些浏览器内部有些机制

浏览器一般都是满足多少字节以后才开始显示的,这个其实很简单的

for($i=0;$i<20;$i++){
echo "ABC";
flush();
ob_flush();
sleep(1);
}

for($i=0;$i<20;$i++){
echo "ABC";
flush();
ob_flush();
sleep(3);//3秒再执行输出
}