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逐行输出需要的内容了。

注意:IE需要接受到256个字节之后才开始显示。

所以,我们需要在之前加上:echo str_pad(" ", 256);

时间: 2024-11-19 01:09:39

Nginx中PHP flush函数无效问题解决办法的相关文章

IE6下onclick下函数无效问题解决办法

函数代码 function test() {   windows.location.href='http://www.111cn.net '; } 问题代码如下: "javascript:void(0);" onclick="javascript:test();">点击会跳转    正确代码如下: "javascript:void(0);" onclick="javascript:test();return false;"

php的flush和ob_flush无效问题解决办法

我的基础环境是nginx1.6.2+php5.3 做一个逐行输出,使用ob_flush时试了N种方法不起作用,比如下面的代码: <?php ob_start(); for(;;) {     echo "<br>.......";     ob_flush();     flush();     sleep(1); } ?> 谷歌了不少的写法都不行,所以问题应该出在了环境配置上而不是使用方法上. 话说还是stackoverflow给力,搜索"php f

Dreamweaver中光标定位不准确问题解决办法

  我以前碰到在Dreamweaver中光标定位不准的问题是在uft-8编码下,但是今天在Dreamweaver CC 设计模式也同样出现此问题了,下面我就整理了一些解决办法,下面我们一起来看看吧. UTF-8页面,Dreamweaver CC 设计模式 光标定位不准确,显示效果如下: 个人认为这里因为Dreamweaver对中文支持不好引起的问题, 我们知道当在utf8编码下, 中文是占两个字符的位置的. 可能DW没有考虑到这个, 把所有的文字做统一长度来处理, 也把中文也当作是一个字符位.

PHPcmsv9 get标签 sql语句limit无效及num和rows属性无效问题解决办法

PHPcms v9 get标签sql语句limit无效及num和rows属性无效问题至今也已经是一个老问题了,网络上也有一些表面的解决办法,但是逐日者并没有找到从底层,层模板标签解析及模板引擎代码上真正解决此问题的办法和解释.今天在使用get标签sql语句调用数据的时候当然也遇到了此问题,经过研究找到了问题的原因并且整理出本文希望对php爱好者有所帮助. 错误描述:我想从数据表中调取最新的6条数据!  代码如下 复制代码      <dl class="about_text1"&

js中ajax 传递中文乱码问题解决办法

解决的办法是使用js的encodeURI函数,对传递的参数进行编码.  代码如下 复制代码 var keywords=encodeURI(document.getElementById("suggestfilm").value); 例  代码如下 复制代码 <script type="text/javascript">         //var data=<%=data %>     jQuery(document).ready(funct

MySQL中Sleep连接过多的问题解决办法

有时候你在mysql中运行SHOW PROCESSLIST;后会发现数据库中有很多这样的进程: 那么造成sleep的原因,有三个,下面是mysql手册给出的解释: 1.客户端程序在退出之前没有调用mysql_close().[写程序的疏忽,或者数据库的db类库没有自动关闭每次的连接...] 2.客户端sleep的时间在wait_timeout或interactive_timeout规定的秒内没有发出任何请求到服务器. [类似常连,类似于不完整的tcp ip协议构造,服务端一直认为客户端仍然存在(

ajax中ie浏览器缓存存问题解决办法

:在AJAX请求的链接中添加时间戳或随机数 总结三种方法  代码如下 复制代码 1.xmlhttp.setRequestHeader("Cache-Control","no-cache"); 2.url += "&random="+Math.random(); 3.url += "×tamp="+new Date().getTime(); 分析研究 在javascript发送的URL后加上t=Math.random()

firefox的margin-top无效问题解决办法

我的解决办法 firefox的margin-top无效的问题我们只要简单的加入display:inline-block;就可以解决了, 下面附一些实例 .box2增加float属性 2.box1与box2之间增加一层"<div style="clear:both;"></div>" (二)子元素设置margin-top作用于父容器  代码如下 复制代码 <div class="box" style="hei

linux中ssh登录很慢问题解决办法

使用ssh客户端(如:putty)连接Linux服务器,可能会等待10-30秒才有提示输入密码.严重影响工作效率.登录很慢,登录上去后速度正常,这种情况主要有两种可能的原因: 1. DNS反向解析问题 OpenSSH在用户登录的时候会验证IP,它根据用户的IP使用反向DNS找到主机名,再使用DNS找到IP地址,最后匹配一下登录的IP是否合法.如果客户机的IP没有域名,或者DNS服务器很慢或不通,那么登录就会很花时间. 解决办法: 在目标服务器上修改sshd服务器端配置,并重启sshd vi /e