PHP 将输出刷新到浏览器


PHP flush the output to browser

我在一个PHP项目上工作,我使用flush()

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

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

不仅仅是

PHP对数据进行分块;这实际上是Apache(或Tomcat等)的工作。这就是为什么默认设置是关闭PHP中的"分块"并将其留给Apache。即使你强制从PHP刷新,它仍然会被Apache捕获。从手册:

flush() 可能无法覆盖 Web 的缓冲方案 服务器,它对 浏览器。它也不会影响PHP的用户空间输出缓冲 机制。这意味着您必须同时调用 ob_flush() 和 flush() 来刷新 OB 输出缓冲区(如果您正在使用这些缓冲区)。

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

Apache在GZIP或deflate编码方面变得更加复杂;你需要点击一个Apache服务器来配置它。

我认为你错了查看此代码

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

如果您运行它,则会看到每 1 个字节发送到浏览器并打印str_repeat用于浏览器缓冲区,用于显示数据,仅此而已