如何用PHP控制緩衝區

2022-03-16 06:20:29 字數 2181 閱讀 2343

用php控制緩衝區

php4.0 提供了乙個輸出緩衝函式集合。輸出緩衝支援允許你寫包裹函式功能壓縮緩衝區。在 php4 的輸出緩衝支援允許 html 頭資訊存 放, 無論 html 的正文是否輸出。但在 php 中,頭資訊( (header(), content type, and cookies )不 採用緩衝。

在使用 php 的過程中不免要使用到 header 和 setcookie 兩個函式,這兩個函式會傳送一段檔案頭資訊給瀏覽器,但是如果在使用 這兩個函式之前已經有了任何輸出(包括空輸出,比如空格,回車和換行)就會提示出錯,提示資訊如 下:「header had all ready send by」!。在 php 4.0 裡面加入了緩衝區控制的幾個函式,使用這些函式可以幫我們解 決很多問題。

函式名稱 函式格式 功能 說明

flush flush()

輸出緩衝區內的內容並且刪除緩衝區。 這個函式經常使用,效率很高。

ob_start void ob_start(void)

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

ob_get_contents string ob_get_contents(void)

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

ob_get_length int ob_get_length(void)

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

ob_end_flush void ob_end_flush(void)

傳送內部緩衝區的內容到瀏覽器,並且關閉輸出緩衝區。 這個函式傳送輸出緩衝區的內容(如果有的話)。

ob_end_clean void ob_end_clean(void)

刪除內部緩衝區的內容,並且關閉內部緩衝區。 這個函式不會輸出內部緩衝區的內容!

用php控制緩衝區

用php控制緩衝區

ob_implicit_flush void ob_implicit_flush ([int flag])

開啟或關閉絕對重新整理 使用過perl的人都知道$|=x的意義,這個字串可以開啟/關閉緩衝區,而ob_implicit_flush函式也和那個一樣,預設為關閉緩衝區,開啟絕對輸出。

二、例項分析:

1、用緩衝區控制的函式防止檔案頭傳送資訊出錯。

<? //php提示符

ob_start(); //開啟緩衝區

echo 」welcome /n」; //輸出

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

?>

如果去掉 ob_start,php 就會提示在檔案的第4行出錯,出錯資訊為「header had all ready send by」,但是 加上 ob_start,就不會提示出錯,原因是當開啟了緩衝區,echo 後面的字元不會輸出到瀏覽器,而是保留在伺服器的緩衝區中,直到你使 用 flush 或者 ob_end_flush 才會輸出,所以並不會出現檔案頭已輸出的錯誤!

2、儲存輸出(這是乙個很經典的用途)。

假如你想知道客戶端的螢幕輸出資訊像函式的輸出結果等,而且這個輸出資訊會因客戶端的不同而不同。我們可以用函 數 <? phpinfo(); ?> 得到伺服器的設定資訊,但是如果想要儲存 phpinfo() 函式的輸出怎麼辦呢?在沒有緩衝區控 制之前,可以說一點辦法也沒有,但是有了緩衝區的控制,我們可以輕鬆的解決。

<?

ob_start(); //開啟緩衝區

phpinfo(); //使用phpinfo函式

$info=ob_get_contents(); //得到緩衝區的內容並且賦值給$info

$file=fopen(』phpinfo.txt』,'w』); //開啟檔案phpinfo.txt

fwrite($file,$info); //寫入資訊到phpinfo.txt

fclose($file); //關閉檔案phpinfo.txt

?>

用以上的方法,就可以把不同使用者的 phpinfo 資訊儲存下來,這在以前恐怕沒有辦法辦到!同樣,用緩衝區的方法可以儲存一般方法難以完成的任務,這其實上就是將一些「過程」轉化為「函式」的方法。

php 緩衝區,PHP的輸出緩衝區

1 什麼是緩衝區?緩衝區的作用是把輸入或者輸出的內容先放進記憶體,而不顯示或者讀取,最本質的作用就是協調高速cpu和相對緩慢的io裝置 磁碟等 的運作。2 php在執行的時候,在什麼地方有用到緩衝區?當執行php的時候,如果碰到了echo print r之類的會輸出資料的 php就會將要輸出的資料放...

PHP下對緩衝區的控制

php4.0 提供了乙個輸出緩衝函式集合。輸出緩衝支援允許你寫包裹函式功能壓縮緩衝區。在 php4 的輸出緩衝支援允許 html 頭資訊存放,無論 html的正文是否輸出。但在php中,頭資訊 header content type,and cookies 不採用緩衝 在使用php的過程中不免要使用...

PHP的緩衝區

php 每執行一條輸出就把結果傳送給 php 緩衝區,php 緩衝區傳送給 apache 緩衝區,apache 緩衝區再傳送給瀏覽器。如果關閉 php 緩衝區,則每執行一條輸出就把結果直接傳送給apache 緩衝區。php.ini中 php 緩衝區預設設定 4096bytes output buff...