PHP在页面加载时回显内容

PHP在页面加载时回显内容,php,apache,http,Php,Apache,Http,所以我正在用PHP/Apache做一些实验。 假设我有这个代码 <div>DIV 1</div> <?php sleep(2); ?> <div>DIV 2</div> <?php sleep(2); ?> <div>DIV 3</div> <?php sleep(2); ?> <div>DIV 4</div> <?php sleep(2); ?> d

所以我正在用PHP/Apache做一些实验。 假设我有这个代码

<div>DIV 1</div>
<?php sleep(2); ?>
<div>DIV 2</div>
<?php sleep(2); ?>
<div>DIV 3</div>
<?php sleep(2); ?>
<div>DIV 4</div>
<?php sleep(2); ?>
div1
第2组
第3组
第4组
由于某些原因,在我的本地apache Web服务器上,在执行完所有4个sleep()之后(8秒),所有数据都会立即显示在浏览器中

但是,如果我在主机的服务器上运行它,数据将实时回显到浏览器。 如。。。div1出现,2秒后div2出现等


为什么呢?这是Apache中的某个设置吗?

否可能是php中的某个设置

在本地服务器中,在php.ini文件中启用了输出缓冲

您可以通过设置来禁用它:

output_buffering = off
要确保每次使用类似echo的语句时都将内容发送到浏览器,请添加:

implicit_flush = on
您还可以通过给输出缓冲一个值来设置缓冲区大小

output_buffering = 4096
这里的缓冲区大小为4KB

输出缓冲告诉php将要发送到浏览器的所有数据保存在内存中,直到它在代码中遇到flush()指令,缓冲区刚好满了,或者脚本结束


以下是php.net中输出缓冲区的完整参考资料:

它通过几个层和设备进行缓冲和缓存,您不能也不应该尝试控制这些层和设备。哦,对不起,我的英语!我的意思是4KB。你说得对,输出缓冲是打开的。我禁用了它,但它仍然是一样的。还有其他想法吗?请仔细检查,apache是否重新启动了?如果您选择phpinfo(),它会告诉您关于该选项的什么信息?您可能需要在php.ini中添加“implicit_flush=on”