Nginx环境下PHP flush失效的解决方法

yipeiwu_com6年前PHP代码库

问题

我在一次调试PHP逐行输出时候,发现ob_flushflush两个都失效了,通过phpinfo基本能判断php.ini的设置是正常的。

解决方法

再去看Nginx,发现Nginx中,有如下的设置:

fastcgi_buffer_size 128k;
fastcgi_buffers 8 128k;

问题基本找到了,Nginx会缓冲PHP输出的信息,当达到128k时才会将缓冲区的数据发送给客户端,那么我们首先需要将这个缓冲区调小,比如:

fastcgi_buffer_size 4k;
fastcgi_buffers 8 4k;

并且,必须禁用gzip

gzip off;

然后,在php中,在ob_flushflush前,输出一段达到4k的内容,例如:

echo str_repeat(‘ ‘, 1024*4);

到此,PHP就可以正常通过ob_flushflush逐行输出需要的内容了。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

相关文章

php中文字母数字验证码实现代码

英文同数字 <?php Header("Content-type:image/png"); //定义header,声明图片文件,最好是png,无版权之扰;  //生成新的...

PHP文件打开、关闭、写入的判断与执行代码

PHP文件打开、关闭、写入的判断与执行代码

如何准确的控制和判断成了PHP中的一个“小问题”,下面是从书上摘抄下来的语句。 复制代码 代码如下: <?php $filename = "html/cache.txt"; $co...

Linux下php5.4启动脚本

Linux下php5.4启动脚本

废话不多说,直接上步骤 1、修改php-fpm.conf配置文件 修改/usr/local/php/etc/php-fpm.conf(当然这个跟你配置的php路径相关)配置文件 启动pi...

解析coreseek for sphinx的使用

1.将下载下来的文件包解压,重新命名为sphinx或者其他。然后放到一个比较合适的位置,一般放到d盘根目录下面。2.找到D:\sphinx\etc里面的csft_mysql.conf这个...

php 中奖概率算法实现代码

实现代码: <?php /** *php 中奖概率算法 * */ function get_zj( $jp ,$glname = 'gl'){ $sum = 0...