前几天我注意到我为php 5编写的新脚本开始输出在php脚本实际完成之前可以查看的html。这是否发生在4?
例如,我有一个很长的循环,每次迭代都会回事。输出在kb方面很小,所以我不认为由于下载速度而导致延迟。有人可以解释输出的差异吗?
答案 0 :(得分:6)
php.ini
中output_buffering指令的配置可能存在差异吗?
如果启用output_buffering
,PHP将“保留”生成的输出到内存(至少,如果它不会变得大于内存缓冲区的大小),并且只有在页面生成完成后才将其发送到浏览器。
如果output_buffering
被禁用,则即使脚本的执行尚未完成,也会在生成时立即发送输出。
答案 1 :(得分:5)
我怀疑PHP 4和5之间在这方面存在差异,但您可以在两个版本上获得此行为,即启用/禁用output_buffer
。也许PHP 5的默认值与PHP 4的默认值不同? (尚未检查)
答案 2 :(得分:1)
发送数据时,它依赖于PHP配置,它是一个输出缓冲区,其行为类似于缓冲区。
话虽如此,您可以使用函数ob_start()
和ob_end_flush()
来控制缓冲区。 Zend Framework在输出缓冲方面做了一些聪明的事情......例如......
答案 3 :(得分:1)
通常的嫌疑人是:
仔细查看工具上的phpinfo()以查看HTTP标头可以帮助您。