php ob start及其相關方法詳解

2021-09-06 08:45:58 字數 1499 閱讀 4454

php函式中,有一組以ob_開頭的函式,被稱為output control函式,通過設定緩衝區用來控制資料的輸出,其中ob_start為開啟緩衝區。當使用者開啟了緩衝區,所有將要輸出到頁面的資訊將先被放置在緩衝區內,直到你用 flush 或者 ob_end_flush 才會輸出到頁面上。

不過對使用 header() 或 setcookie() 傳送的檔案頭資訊不會被寫入緩衝區,對header()有多了解就知道,在使用header函式之前,頁面是不能有輸出哪怕是空格和換行也不行,否則就會報「header had all ready send by」的錯誤資訊了。當時當我們在頁面最開始開啟了緩衝區(呼叫ob_start方法),那我們輸出的內容將被快取在快取內,這樣在呼叫header方法時將不會出現「header had all ready send by」的錯誤提示。見如下**:

<?php

ob_start();    // 開啟緩衝區

echo \"hellon\";    // 輸出

header("location:index.php");    // 把瀏覽器重定向到index.php

ob_end_flush();   // 輸出全部內容到瀏覽器

?>

這段**將不會出現錯誤提示。

2、用來捕捉頁面輸出,然後修改替換輸出到頁面的內容

3、結合ob_gzhandler來壓縮頁面大小,甚至是截獲輸出內容自己**壓縮

4、有時候乙個長連線的頁面中,需要分布輸出內容來提示使用者

等等,只要你有住夠的想象力,還能有很多靈活的應用。

函式格式:flush()

說明:這個函式經常使用,效率很高。

函式格式:void ob_start(void)

說明:當緩衝區啟用時,所有來自php程式的非檔案頭資訊均不會傳送,而是儲存在內部緩衝區。為了輸出緩衝區的內容,可以使用ob_end_flush()或flush()輸出緩衝區的內容。

使用方法:string ob_get_contents(void)

說明:這個函式會返回當前緩衝區中的內容,如果輸出緩衝區沒有啟用,則返回 false 。

使用方法:int ob_get_length(void)

說明:這個函式會返回當前緩衝區中的長度;和ob_get_contents一樣,如果輸出緩衝區沒有啟用。則返回 false。

使用方法:void ob_end_flush(void)

說明:這個函式傳送輸出緩衝區的內容(如果有的話)。

使用方法:void ob_end_clean(void)

說明:這個函式不會輸出內部緩衝區的內容而是把它刪除!

使用方法:void ob_implicit_flush ([int flag])

說明:使用過perl的人都知道$|=x的意義,這個字串可以開啟/關閉緩衝區,而ob_implicit_flush函式也和那個一樣,預設為關閉緩衝區,開啟絕對輸出後,每個指令碼輸出都直接傳送到瀏覽器,不再需要呼叫 flush()

HibernateTemplate相關方法

向資料庫新增一條對應於乙個業務物件例項的記錄 param entity 業務物件例項 public entity create entity entity throws daoexception catch dataacces ception e 向資料庫更新一條對應於乙個業務物件例項的記錄 par...

HibernateTemplate相關方法

向資料庫新增一條對應於乙個業務物件例項的記錄 param entity 業務物件例項 publicentity create entity entity throwsdaoexceptioncatch dataacces ception e 向資料庫更新一條對應於乙個業務物件例項的記錄 param ...

子視窗及其相關

建立子視窗 btnlook 定義了乙個叫做button的結構,它包括了按鈕視窗樣式和描述性字串,它們對應於10個按鈕型態,所有按鈕視窗樣式都以字母 bs 開頭,它表示 按鈕樣式 10個按鈕子視窗是在wndproc中處理wm create訊息的過程中使用乙個for迴圈建立的。createwindow呼...