2009-12-20 36 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框架做一些聰明的東西與輸出緩衝比如...