PHP在页面加载时回显内容

Joh*_*ohn 6 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); ?>
Run Code Online (Sandbox Code Playgroud)

出于某种原因,在我的本地apache webserver上,所有4个sleep()执行完毕后(8秒),所有数据都会立即出现在浏览器中.

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

这是为什么?这是Apache的一些设置吗?

dad*_*der 6

不,它可能是PHP中的设置.

在本地服务器中,在php.ini文件中启用了output_buffering.

您可以通过设置禁用它:

output_buffering = off
Run Code Online (Sandbox Code Playgroud)

要确保每次使用类似回声的语句时将内容发送到浏览器,请添加:

implicit_flush = on
Run Code Online (Sandbox Code Playgroud)

您还可以通过给output_buffering赋值来设置缓冲区大小.

output_buffering = 4096
Run Code Online (Sandbox Code Playgroud)

这里缓冲区大小为4KB.

输出缓冲告诉php将所有要发送到浏览器的数据保留在内存中,直到它在代码中引发flush()指令,缓冲区恰好已满,或者它是脚本的结尾.

这是php.net输出缓冲区的完整参考:php输出缓冲区