php实现边执行边输出的效果
header('X-Accel-Buffering: no');//关闭nginx的缓存
output_buffering = 0 ;或者 output_buffering = Off
二是PHP代码中关闭
ob_end_flush(); //或者 ob_end_clean(); //与ob_end_flush类似, //二者区别: 在下次调用flush的时候, ob_end_clean不会输出在他之前echo/print的内容, 而ob_end_flush会
三是获取buffer中的内容进行输出
ob_flush()
最后展示
header('X-Accel-Buffering: no');//关闭nginx的缓存 echo 'begin...<br>'; //方式1 ob_end_flush();//关闭缓存 数据不再存储到buffer区域中,变为等待输出状态 for($i = 1; $i <= 3; $i++) { echo 'loading '.$i.'0%<br>'; flush();//将等待输出的数据立刻输出到客户端 sleep(1); } //方式2 ob_end_flush();//关闭缓存 数据不再存储到buffer区域中,变为等待输出状态 ob_implicit_flush(1);//打开绝对(隐式) 刷送。每次输出调用后有一次刷送操作,以便不再需要对 flush() 的显式调用。 for($i = 1; $i <= 3; $i++) { echo 'loading '.$i.'0%<br>'; sleep(1); } //方式3 for($i = 1; $i <= 3; $i++) { echo 'loading '.$i.'0%<br>'; ob_flush();//获取缓存区的内容,转为等待输出状态 flush();//将等待输出的数据立刻输出到客户端 sleep(1); }
apache需要更改httpd.conf 的 FcgidOutputBufferSize 0