深入理解ob flush和flush的區別

2021-07-31 13:42:51 字數 850 閱讀 4465

ob_flush/flush在手冊中的描述, 都是重新整理輸出緩衝區, 並且還需要配套使用, 所以會導致很多人迷惑…

其實, 他們倆的操作物件不同, 有些情況下, flush根本不做什麼事情..

ob_*系列函式, 是操作php本身的輸出緩衝區.

所以, ob_flush是重新整理php自身的緩衝區.

而flush, 嚴格來講, 這個只有在php做為apache的module(handler或者filter)安裝的時候, 才有實際作用. 它是重新整理webserver(可以認為特指apache)的緩衝區.

在apache module的sapi下, flush會通過呼叫sapi_module的flush成員函式指標, 間接的呼叫apache的api: ap_rflush重新整理apache的輸出緩衝區, 當然手冊中也說了, 有一些apache的其他模組, 可能會改變這個動作的結果..

有些apache的模組,比如mod_gzip,可能自己進行輸出快取,

這將導致flush()函式產生的結果不會立即被傳送到客戶端瀏覽器。

甚至瀏覽器也會在顯示之前,快取接收到的內容。例如 netscape

瀏覽器會在接受到換行或 html 標記的開頭之前快取內容,並且在

接受到 標記之前,不會顯示出整個**。

一些版本的 microsoft internet explorer 只有當接受到的256個

位元組以後才開始顯示該頁面,所以必須傳送一些額外的空格來讓這

些瀏覽器顯示頁面內容。

所以, 正確使用倆者的順序是. 先ob_flush, 然後flush,

當然, 在其他sapi下, 不呼叫flush也可以, 只不過為了保證你**的可移植性, 建議配套使用.

深入理解ob flush和flush的區別

作者 laruence ob flush flush 在手冊中的描述 都是重新整理輸出緩衝區 並且還需要配套使用 所以會導致很多人迷惑 其實,他們倆的操作物件不同 有些情況下 flush 根本不做什麼事情.ob 系列函式 是操作 php本身的輸出緩衝區.所以,ob flush 是重新整理php 自身...

深入理解ob flush和flush的區別

ob flush flush在手冊中的描述,都是重新整理輸出緩衝區,並且還需要配套使用,所以會導致很多人迷惑 其實,他們倆的操作物件不同,有些情況下,flush根本不做什麼事情.ob 系列函式,是操作php本身的輸出緩衝區.所以,ob flush是重新整理php自身的緩衝區.而flush,嚴格來講,...

深入理解C語言 深入理解指標

關於指標,其是c語言的重點,c語言學的好壞,其實就是指標學的好壞。其實指標並不複雜,學習指標,要正確的理解指標。指標也是一種變數,占有記憶體空間,用來儲存記憶體位址 指標就是告訴編譯器,開闢4個位元組的儲存空間 32位系統 無論是幾級指標都是一樣的 p操作記憶體 在指標宣告時,號表示所宣告的變數為指...