所以我正在做一些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); ?>
出于某种原因,在我的本地apache网络服务器上,所有4个sleep()执行完毕后(8秒),所有数据都会立即显示在浏览器中。
但是,如果我在主机的服务器上运行它,数据会实时回显到浏览器。 如... div1出现,2秒后div 2出现等。
为什么?这是Apache的一些设置吗?
答案 0 :(得分:6)
不,它可能是php中的设置。
在本地服务器中,在php.ini文件中启用了output_buffering。
您可以通过设置:
来禁用它output_buffering = off
要确保每次使用类似回声的语句时都将内容发送到浏览器,请添加:
implicit_flush = on
您还可以通过给output_buffering赋值来设置缓冲区大小。
output_buffering = 4096
此处缓冲区大小为4KB。
输出缓冲告诉php将所有要发送到浏览器的数据保留在内存中,直到它在代码中引发flush()指令,缓冲区恰好已满,或者它是脚本的结尾。
以下是来自php.net的输出缓冲区的完整参考:php output buffer