flush在nginx下失效问题
set_time_limit(0);
ob_implicit_flush();
ob_end_clean();
for($i = 1;$i < 10; $i++){
echo str_repeat(" ", 1024*5);
echo "输出内容$i<br />";
ob_flush();
flush();
sleep(1);
}
这段代码在nginx下失效了,在本地apache能实时输出内容。请问如何解决?
解决办法:
打开nginx.conf文件。
在你的location域中设置:
gzip off;
fastcgi_buffer_size 256k;
fastcgi_buffers 256 1k;
实时输出取决于两方面:
一个是response的字节数要超过web server缓冲区的大小。
还有一个是要超过浏览器的缓冲区大小。
所以你str_repeat();的字节数尽量大一些。我看你设置1024*其实已经很大了。估计是你的gzip没关或者fastcgi的缓冲区设置的太大了。
全文:http://bbs.csdn.net/topics/390296957