3 回答

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超4個(gè)贊
ob_start();
....
ob_clean();
這兩句中間的任意輸出,都可以用ob_get_contents();來獲取而不輸出到瀏覽器.
經(jīng)典應(yīng)用:將phpinfo()的信息寫到文件里.
ob_start();
phpinfo();
$phpinfo = ob_get_contents();
//文件讀寫操作
ob_clean();
其實(shí)ob是output buffering的簡稱,而不是output cache,ob用對了,是能對速度有一定的幫助,但是盲目的加上ob函數(shù),只會(huì)增加CPU額外的負(fù)擔(dān)。下面我說說ob的基本作用。
1.防止在瀏覽器有輸出之后再使用setcookie,或者h(yuǎn)eader,session_start函數(shù)造成的錯(cuò)誤。(我本以為最開始說的代碼是這樣的作用,但后來朋友說不是的),其實(shí)這樣的用法少用為好,養(yǎng)成良好的代碼習(xí)慣。
2.捕捉對一些不可獲取的函數(shù)的輸出,比如phpinfo會(huì)輸出一大堆的HTML,但是我們無法用一個(gè)變量例如$info=phpinfo();來捕捉,這時(shí)候ob就管用了
3.對輸出的內(nèi)容進(jìn)行處理,例如進(jìn)行g(shù)zip壓縮,例如進(jìn)行簡繁轉(zhuǎn)換,例如進(jìn)行一些字符串替換。
4.生成靜態(tài)文件,其實(shí)就是捕捉整頁的輸出,然后存成文件,經(jīng)常在生成HTML,或者整頁緩存中使用。
對于剛才說的第三點(diǎn)中的GZIP壓縮,可能是很多人想用,卻沒有真真用上的,其實(shí)稍稍修改下我朋友的代碼,就可以實(shí)現(xiàn)頁面的gzip壓縮。
- 3 回答
- 0 關(guān)注
- 1049 瀏覽
添加回答
舉報(bào)