深入理解ob flush和flush的區別

2021-07-04 20:07:19 字數 1584 閱讀 3240

·        

作者: laruence()

·        

: ·        

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

的其他模組

, 可能會改變這個動作的結果..

1.       

有些apache

的模組,比如

mod_gzip

,可能自己進行輸出快取,

2.       

這將導致

flush()

函式產生的結果不會立即被傳送到客戶端瀏覽器。

3.       

4.       

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

netscape

5.       

瀏覽器會在接受到換行或

html

標記的開頭之前快取內容,並且在

6.       

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

7.       

8.       

一些版本的

microsoft internet explorer

只有當接受到的

256個

9.       

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

10.    

些瀏覽器顯示頁面內容。 所以

, 正確使用倆者的順序是. 先

ob_flush,

然後flush, 當然

, 在其他

sapi下,

不呼叫flush

也可以,

只不過為了保證你**的可移植性

, 建議配套使用

.

深入理解ob flush和flush的區別

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

深入理解ob flush和flush的區別

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

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

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