转载时请标明文章原始出处和作者信息, 作者: lostsnow.
http://www.lsproc.com/blog/use_ob_flush_on_nginx_fastcgi/
Nginx与php-cgi是两个独立的程序,通过TCP或Unix套接字通信,不像Apache那样是集成在一起的。所以,Nginx有fastcgi 缓冲区,数据超出缓冲区大小、或程序执行完,才会将内容输出到客户端。如果要使用ob_flush,不能开启gzip压缩输出。
nginx.conf:
fastcgi_buffer_size 4k; fastcgi_buffers 8 4k; gzip off;
php.ini:
output_buffering = Off
<?php
set_time_limit(0);
ob_end_clean();
ob_implicit_flush(1);
for($i = 0; $i < 10; $i++)
{
echo $i . "<br />\n";
echo str_repeat(' ', 1024*4);
sleep(1);
}
其中 echo str_repeat(' ', 1024*4);
使得fastcgi_buffer_size 4k; 的缓冲区满,从而输出内容到浏览器
参考: http://blog.s135.com/nginx_php_v6/2/1/
-- EOF --