是否可以在每次执行循环时回显?例如:
foreach(range(1,9) as $n){ echo $n."\n"; sleep(1); }
我不想看到循环结束时打印所有内容,而是希望它每次都打印每个结果。
最终解决方案
这就是我发现的:
Flush在Apache的mod_gzip或Nginx的gzip下不起作用,因为从逻辑上讲,它正在对内容进行gzip处理,并且这样做必须缓冲内容才能对其进行gzip处理。任何类型的Web服务器gzip压缩都会影响此。简而言之,在服务器端,我们需要禁用gzip并减小fastcgi缓冲区的大小。所以:
。output_buffering =关
。zlib.output_compression =关闭
。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); }