溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP中ob緩存的應用

發布時間:2020-07-03 17:31:54 來源:億速云 閱讀:670 作者:元一 欄目:編程語言

這篇文章運用簡單易懂的例子給大家介紹PHP中ob緩存的應用,代碼非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

php緩存過程

在請求一個PHP的過程中,實際上經過三個緩存:

1.程序緩存

2.ob緩存

3.瀏覽器緩存.

開啟ob的兩個方法

1.在php.ini 配置 ;output_buffering = 4096 這里去掉;號即可

2 在php頁面中使用 ob_start();

通過php.ini 打開的,則作用于所有的php頁面 。使用ob_start()打開則只作用于該頁面

ob緩存的知識點

在服務中,如果我們開啟了ob緩存,則echo數據首先放入到ob中

當PHP頁面執行到最后,則會把ob緩存的數據(如果有的話), 強制刷新到程序緩存,然后通過apache對數據封裝成http響應包,返 回給瀏覽器

如果沒有ob,所有的數據直接放入程序緩存。 header信息不管你是否開啟ob,總是放入到程序緩存。

注意:在程序中如果開啟ob_start(),所有的echo輸出都會保存到ob緩存中,可以使用ob系列函數進行操作,如果沒有,默認情況下,在程序執行結束,會把緩存中的數據發送給瀏覽器,如果,你使用ob_clean()類似的函數,會情況緩存中的內容,那么就不用有數據發送給瀏覽器

ob相關的函數

ob_start($callback)

//在當前頁面中開啟ob,注意callback
ob_start($callback);

ob_get_contents()

//獲取當前ob緩存中的內容
ob_get_contents()

ob_get_clean()

//獲取當前ob緩存中的內容,并且清空當前的ob緩存
ob_get_clean()

ob_flush()

//將ob緩存中的內容,刷到程序緩存中,但并沒有關閉ob緩存
ob_flush()

ob_end_flush()

//關閉ob緩存,并將數據刷回到程序緩存中
ob_end_flush()

ob_clean()

//將ob緩存中的內容清空
ob_clean()

ob_end_clean()

//將ob緩存中的數據清空,并且關閉ob緩存
ob_end_clean()

注意ob_start($callback)的回調

<?php
ob_start("callback_func");
function callback_func($str){
    return "callback".$str;
}
echo "123";//輸出:callback123

應用場景

在header()發送之前的報錯

出錯代碼

<?php
echo "before_header";
header("Content-type:text/html;charset=utf-8");
echo "after_header";

輸出:

Warning: Cannot modify header information - headers already sent by (output started at /Users/shuchao/Desktop/test.php:2) in /Users/shuchao/Desktop/test.php on line 3

解決辦法

在發送header前開啟ob,則所有的echo內容都會到ob里面,從而解決錯誤。

<?php
ob_start();
echo "before_header\n";
header("Content-type:text/html;charset=utf-8");
echo "after_header\n";

輸出

before_header
after_header

關于PHP中ob緩存的應用就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女