php ob_flush 不能每隔一秒输出的解决方法

发布时间:2020-07-02编辑:脚本学堂
本文介绍在php中使用ob_flush时,不能每隔一秒输出的解决方法,有遇到类似问题的朋友,可以参考学习下。

使用php中的on_flush,要求浏览器每隔一秒输出一个数字。

php.ini配置为版本5.3
 

implicit_flush = off
output_buffering = off
 

另:查看output_buffering是否打开,可以:
 

var_dump(ini_get('output_buffering'));

例子:
 

复制代码 代码示例:
<?php
$i = 3;
ob_start();
while ($i--) {
   echo $i, "<br />";
   ob_flush();
   flush();
   sleep(1);
}
ob_end_clean();
?>
 

问题:这段代码不能每隔一秒输出呢?
原因分析:
apache运行原理:当访问一个地址(发送请求)后,在apache服务器中启动PHP,php执行是页面级的,如果有可执行的代码:
它全部执行完后再丢给apache,apache再丢给browser显示结果。

解决方法:
如果是cli 显示结果方式又不一样,那里不一样呢?
linux cmd:
php5 test.php
由php直接执行,不经过apache,web service,即可实现:
 

复制代码 代码示例:
<?php
$i = 3;
while ($i--) {
   echo $i, "n";
   sleep(1);
}
ob_end_clean();
?>