Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP将输出刷新到浏览器_Php_Flush - Fatal编程技术网

PHP将输出刷新到浏览器

PHP将输出刷新到浏览器,php,flush,Php,Flush,我从事一个PHP项目,并使用flush() 我做了很多搜索,发现PHP以块的形式向浏览器发送脚本的长输出,并且在脚本终止时不会发送所有的大数据 我想知道这些数据的大小,我的意思是PHP必须输出多少字节才能将它们发送到浏览器。不仅仅是PHP对数据进行分块;这实际上是Apache(或Tomcat等)的工作。这就是为什么默认设置是关闭PHP中的“分块”,并将其留给Apache。即使从PHP强制刷新,它仍然可能被Apache捕获。从手册中: flush()可能无法覆盖web的缓冲方案 它对服务器中的任何

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

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


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

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

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

维基百科上有一篇关于传输编码/分块的文章:

Apache使用GZIP或deflate编码变得更加复杂;您需要点击apache服务器了解如何配置它。

我认为您错了 请参阅此代码

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

对于($i=0;$iI),在决定实际显示之前,我很确定浏览器也有某种限制。是的。现代浏览器必须接收512字节才能显示内容,但我想知道php限制,以便自动刷新浏览器的输出(不调用flush()函数)flush()上的描述部分pages提供了我能找到的最多的信息-对此没有固定的答案。不,php不使用它。在我的系统中,输出缓冲是关闭的,但当我运行一个循环100000次的脚本时,脚本会逐渐从php捕获数据,这意味着php以块部分发送输出,而不是脚本终止。我知道输出缓冲=on做什么,但php使用发出此指令在大型脚本上发送块大小输出这一切都取决于您的Web服务器配置和浏览器。最快的方法是在apache上打开GZIP,然后看看会发生什么。