0

前几天我注意到我为 php 5 编写的一个新脚本开始输出在 php 脚本实际完成之前可以查看的 html。4 发生过这种情况吗?

例如,我有一个很长的循环,每次迭代都会回显一些东西。就 kb 而言,输出很小,所以我不认为这是由于下载速度而导致的滞后。有人可以解释输出的差异吗?

4

4 回答 4

6

也许output_buffering指令的配置有所不同,在php.ini

如果output_buffering启用,PHP 会将生成的输出“保留”在内存中(至少,如果它没有变得大于内存缓冲区的大小),并且仅在页面生成完成时将其发送到浏览器。

如果output_buffering禁用,则在生成时立即发送输出,即使脚本的执行尚未完成。

于 2009-12-20T21:02:57.020 回答
5

我怀疑 PHP 4 和 5 之间在这方面存在差异,但是您可以在两个版本上获得这种行为,即通过启用/禁用output_buffer. 也许 PHP 5 的默认值与 PHP 4 的不同?(没查过)

于 2009-12-20T21:02:47.673 回答
1

发送数据时,取决于 PHP 配置,它是一个输出缓冲区,其行为类似于缓冲区。

话虽如此,您可以使用该功能ob_start()ob_end_flush()控制缓冲区。Zend 框架通过输出缓冲做了一些聪明的事情......

于 2009-12-21T23:06:57.383 回答
1

通常的嫌疑人是:

A close look at phpinfo() at a tool to see HTTP headers can help you.

于 2009-12-22T17:51:50.380 回答