My initial reaction這是「這是我所期望的行爲」,但它turns out有一些微妙之處在於你所使用的PHP版本。
首先我們要介紹爲什麼我的第一反應是這是什麼,因爲(因爲you are using 5.3)它適用於你的測試:
ob_end_flush()
隱式調用flush()
,推頭到瀏覽器,無論任何內容是否已經產生。
echo '';
,另一方面基本上是一個NOOP - 你問的引擎做什麼,所以什麼也沒發生。
然而,多一點調查顯示,implicit_flush
option爲OB其實關閉默認情況下,所以這不應該事實上任何區別,除非你已啓用選項明確。
而且,這種行爲是不5.2.2之前或5.4.0+看到 - 所以我的下一個停靠港是與this比較this。即使你根本看不懂C語言,但顯然5.3和5.4中的輸出處理之間存在巨大差異 - 發生了相當大的重寫。
由於現實生活中的承諾,我還沒有把它適當地分開,並找到這個具體問題相關的關鍵代碼,但我會很快這樣做,並在此答案擴大時,我已經這樣做了。
摘要:
- 根據您的PHP版本和配置,這可能很可能是合乎邏輯的和預期的行爲。
- 在PHP版本重的差異使這個問題有更多的只是一個簡單的答案
你試過了更先進的最新版本的PHP? 5.3.10顯然沒有做到這一點:http://codepad.viper-7.com/PBuzbY – Ryan 2013-05-01 04:28:46
@rynah:運行'的phpinfo()'那裏 - 它'output_buffering \t 4096' – zerkms 2013-05-01 04:29:59
我沒有得到與PHP錯誤5.3.6 – Amir 2013-05-01 05:29:33