2009-12-20 56 views
0

我注意到有一天,我为php 5编写的一个新脚本开始输出在php脚本实际完成之前可见的html。这是在4时发生的吗?例如,我有一个很长的循环,每次迭代都会回响一些东西。以kb为单位的输出量很小,所以我不认为它由于下载速度而滞后。有人可以解释输出的差异吗?php 4和5之间有输出差异吗?

回答

6

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

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

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

5

我怀疑PHP 4和5之间有什么区别,但是你可以在两个版本上都得到这个行为,即启用/禁用output_buffer。也许PHP 5的默认值与PHP 4的默认值不同? (没有检查)

1

发送数据时,依赖于PHP配置,它是一个输出缓冲区,并且像缓冲区一样。

话虽如此,您可以使用函数ob_start()ob_end_flush()来控制缓冲区。 Zend框架做一些聪明的东西与输出缓冲比如...