PHP将输出刷新到浏览器

时间:2012-08-08 04:14:46

标签: php flush

我从事PHP项目,并使用flush()

我做了很多搜索,发现PHP在块中将大量脚本输出发送到浏览器,并且在脚本终止时不会发送所有大量数据。

我想知道这些数据的大小,我的意思是PHP必须输出多少字节才能将它们发送到浏览器。

2 个答案:

答案 0 :(得分:3)

PHP不仅可以分块数据;它实际上是Apache(或Tomcat等)的工作。这就是默认情况下关闭PHP中的“分块”并将其留给Apache的原因。即使你强制从PHP中刷新,它仍然可能被Apache困住。从手册:

  

flush()可能无法覆盖您网络的缓冲方案   服务器,它对任何客户端缓冲没有影响   浏览器。它也不会影响PHP的用户空间输出缓冲   机制。这意味着你必须同时调用ob_flush()和   flush()用于刷新ob输出缓冲区,如果你正在使用它们。

有一篇关于传输编码/分块的维基百科文章:http://en.wikipedia.org/wiki/Chunked_transfer_encoding

Apache使用GZIP或deflate编码变得更复杂;你需要在apache服务器上找到你如何配置它。

答案 1 :(得分:0)

我认为你错了 见这段代码

echo str_repeat(' ',1024);
for($i=0;$i<10;$i++){
echo $i;
flush();
sleep(1);   

如果你运行它,看到每1个字节发送到浏览器并打印 // str_repeat用于显示数据的浏览器缓冲区