小编典典
最终解决方案
这就是我发现的:
Flush在Apache的mod_gzip或Nginx的gzip下不起作用,因为从逻辑上讲,它正在对内容进行gzip处理,并且这样做必须缓冲内容才能对其进行gzip处理。任何类型的Web服务器gzip压缩都会影响此。简而言之,在服务器端,我们需要禁用gzip并减小fastcgi缓冲区的大小。所以:
在php.ini中:
。output_buffering =关
。zlib.output_compression =关闭
在nginx.conf中:
。gzip关闭;
。proxy_buffering关闭;
还要准备以下这行代码,特别是在您没有php.ini权限的情况下:
@ini_set(’zlib.output_compression’,0);
@ini_set(’implicit_flush’,1);
@ob_end_clean();
set_time_limit(0);
最后,如果有的话,将代码注释如下:
ob_start(’ob_gzhandler’);
ob_flush();
PHP测试代码:
ob_implicit_flush(1);
for($i=0; $i<10; $i++){
echo $i;
//this is for the buffer achieve the minimum size in order to flush data
echo str_repeat(' ',1024*64);
sleep(1);
}
2020-05-29