Nginx环境下PHP flush失效的解决方法
投稿:daisy
最近在工作中发现了一个问题,PHP的flush居然失效了,从网上找了一些资料,发现是Nginx的原因,所以这篇文章就给大家介绍了问题与解决办法,有需要的朋友们下面来一起看看吧。
问题
我在一次调试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环境搭建与配置