当前位置:博客首页>>PHP >> 阅读正文

php的flush和ob_flush不起作用?

作者: 郑晓 分类: PHP 发布于: 2016-04-08 08:55 浏览(2,571) 评论(3)


我的基础环境是nginx1.6.2+php5.3

做一个逐行输出,使用ob_flush时试了N种方法不起作用,比如下面的代码:

<?php
ob_start();
for(;;)
{
    echo "<br>.......";
    ob_flush();
    flush();
    sleep(1);
}
?>

谷歌了不少的写法都不行,所以问题应该出在了环境配置上而不是使用方法上。
话说还是stackoverflow给力,搜索“php flush not working”找到了一个正确的解决方法:
检查nginx配置文件(nginx.conf),禁用nginx的buffering:

proxy_buffering off;
gzip off;
fastcgi_keep_conn on;

要注意最后这句fastcgi的哦~~
检查php.ini,禁用buffering:

output_buffering = off

注意这句配置不能通过ini_set()函数动态在程序中设置,这在php官方手册中有说明:

the output_buffering setting is PHP_INI_PERDIR therefore it may not be set using ini_set()

经过上面两步的配置(nginx.conf和php.ini)后,重启nginx就可以了,再次测试文章开头的代码,成功逐行输出。

本文出自 郑晓个人博客,转载时请注明出处及相应链接。

本文永久链接: https://www.zh30.com/php-flush-ob-flush-notwork.html

php的flush和ob_flush不起作用?:目前有3 条留言

用户评论头像 孤寒的小窝头发表于 2016年12月27日 下午 02:05[回复]

用户评论头像 好书网发表于 2016年04月15日 上午 10:54[回复]

好久没过来瞅瞅了

用户评论头像 zengda发表于 2016年04月08日 上午 10:23[回复]

不错,不错,看看了!

发表评论

由于某些原因,您暂时可能接收不到我回复后的邮件通知,抱歉。-- 2017-05-24

如需我主动联系您,可以留言注明。

change vcode