PHPob緩存以及ob函數原理實(shí)例解析 DATE: 2026-05-05 07:01:16
這(zhe)篇文章主要介紹了PHP ob緩存以及ob函數原理實(shí)例解析,緩函數文中通過(guò)(′?ω?`)示例代碼介紹的非常詳細,對大家的存及學(xué)習或者工作具有一定的參考學(xué)習價(jià)值,需要的朋友可以參考下
ob緩存介紹
ob是output buffering的簡(jiǎn)稱(chēng),輸出緩沖區,原理緩沖區是實(shí)??例通過(guò)php.ini中的output_buffering變量控制的。其默認值是解析off,可以設置為on來(lái)打開(kāi)buffer。打來(lái)buf??fer后,緩函數即便程序中沒(méi)有用ob函數,存及實(shí)際上代碼也是原理使用了緩沖區的。另外,實(shí)例不管php.(′_ゝ`)ini中output_buffering的解析設置,cli模式下的緩函數php始終默認是(′▽?zhuān)?關(guān)閉的。為什么要是存及緩沖區呢?簡(jiǎn)單來(lái)說(shuō),高速的原理cpu早早處理完自己的數據,想通過(guò)線(xiàn)路傳遞給用戶(hù),實(shí)例但是解析線(xiàn)路太窄了,一下輸送不過(guò)去。如果引入緩沖區,cpu可以將快速將生成的數據放入緩沖區,然后自己哪兒涼快兒哪兒呆著(zhù)這歇著(zhù)去了。緩沖區根據指令適時(shí)將數據輸出。這個(gè)樣就合理解決了高速cpu與低速I(mǎi)/O設備的矛盾了。
ob的基本原則:如果ob緩存打開(kāi),則echo的數據首先放在ob緩存。如果是header信息,直接(jie)放在程序緩存。當頁(yè)面執行到最后,會(huì )把ob緩存的數據放到程序緩存,然后依次返回給瀏覽器。
ob的基本作用:
2)捕捉對一些不可獲取的函數的輸出,比如phpinfo()會(huì )輸出一大堆的HTML,但是我們無(wú)法用一個(gè)變量例如$info=phpinfo();來(lái)捕捉,這時(shí)候ob就管用了。
3)對輸出的內容進(jìn)行處理,例如進(jìn)行g(shù)zip壓縮,例如進(jìn)行簡(jiǎn)繁轉換,例如ヽ(′▽?zhuān)?ノ進(jìn)行一些字符串替換。
4)生成靜態(tài)文件,其實(shí)就是捕捉整頁(yè)??的輸出,然后存成文件。經(jīng)常在生成HTML,或者整頁(yè)緩存中使用。
ob相(◎_◎;)關(guān)函數詳解
1、Flush:刷新緩沖區的內??容,輸出。
函數格式:
flush()
說(shuō)明:這個(gè)函數經(jīng)常使用,效(?_?;)率很高。
2、ob_start :打開(kāi)輸出緩(╬?益?)沖區??
void ob_start(void)
說(shuō)明:當緩沖區激活時(shí),所有來(lái)自PHP程序的非文件頭信息均不會(huì )發(fā)送,而是保存在內部緩沖區。為了輸出緩沖區的內容(rong),可以使用ob_end(′;ω;`)_flush()或fl?ush()輸出緩沖區的內容。
3 、ob_get_contents :返回內部緩沖區的內容。
使用方法:
string ob_get_contents(void)
說(shuō)明:這個(gè)函數會(huì )返回當前緩沖區中的內容,如果輸出緩沖區沒(méi)有激活,則返回 FALSE 。
4、ob_get_length:返回內部緩沖區的長(cháng)度。
使用方法:
int ob_get_length(void)
說(shuō)明:這個(gè)函??數會(huì )返回當前緩沖區中的長(cháng)度;和ob_get(╯°□°)╯_contents一樣,如果輸出緩沖區沒(méi)有激活。則返回 FALSE。
5、ob_end_flush :發(fā)送(′?_?`)內部緩沖區的內容到瀏覽器,并且關(guān)閉輸出緩沖區。
使用方法:
void ob_end_??flush(void)
說(shuō)明:這個(gè)函數發(fā)送輸出緩沖區的內容(如果有的話(huà))。
6、ob_end_clean:刪除內部緩沖區的內容,并且關(guān)閉內部緩沖區
說(shuō)明:這個(gè)函數不會(huì )輸出內部緩沖區的內容而是把它刪除!
7、ob_implicit_flush:打開(kāi)或關(guān)閉絕對刷新
使用方法:
void ob_implicit_flush ([int flag])
關(guān)于flush函數實(shí)例代碼如下:

