Nginx环境下PHP flush失效的解决方法
问题
我在一次调试PHP逐行输出时候,发现ob_flush和flush两个都失效了,通过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_flush和flush前,输出一段达到4k的内容,例如:
echo str_repeat(‘ ‘, 1024*4);
到此,PHP就可以正常通过ob_flush和flush逐行输出需要的内容了。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。
- 详解Docker创建php开发环境遇到的权限问题解决方案
- PHP环境搭建(php+Apache+mysql)
- 在Linux(Ubuntu)下搭建PHP环境的操作步骤
- PHP+Apache+Mysql环境搭建教程
- apache php mysql开发环境安装教程
- 图文详解PHP环境搭建教程
- PHP环境搭建的详细步骤
- windows server 2008/2012安装php iis7 mysql环境搭建教程
- win7下搭建nginx+php的开发环境
- 非集成环境的php运行环境(Apache配置、Mysql)搭建安装图文教程
- 老司机传授Ubuntu下Apache+PHP+MySQL环境搭建攻略
- 在Mac OS的PHP环境下安装配置MemCache的全过程解析
- 简述php环境搭建与配置
相关文章
php数组函数序列之array_slice() - 在数组中根据条件取出一段值,并返回
array_slice() 函数在数组中根据条件取出一段值,并返回2011-11-11
php session_start()关于Cannot send session cache limiter - hea
在windows下编程,当使用session_start()方法的时候,有时会报 session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /var/www/inpublisher/php1.php:1)这样的错误2009-11-11


最新评论