ob函式相關

2021-09-24 05:04:02 字數 1346 閱讀 6124

1.下面我說說ob的基本作用:

1)防止在瀏覽器有輸出之後再使用setcookie()、header()或session_start()等傳送標頭檔案的函式造成的錯誤。其實這樣的用法少用為好,養成良好的**習慣。

2)捕捉對一些不可獲取的函式的輸出,比如phpinfo()會輸出一大堆的html,但是我們無法用乙個變數例如$info=phpinfo();來捕捉,這時候ob就管用了。

3)對輸出的內容進行處理,例如進行gzip壓縮,例如進行簡繁轉換,例如進行一些字串替換。

4)生成靜態檔案,其實就是捕捉整頁的輸出,然後存成檔案。經常在生成html,或者整頁快取中使用。

靜態化的實現方式

利用ob系列的函式

ob_start();  開啟輸出控制緩衝

ob_get_contents(); 返回輸出緩衝區內容

ob_clean(); 清空輸出緩衝區

ob_end_flush(); 沖刷出(送出)輸出緩衝區內容並關閉緩衝

ob_start();

輸出到頁面的html**....

......

ob_get_contents();

ob_end_flush();

fopen()寫入

3.利用ob系列的函式

可以判斷檔案的inode修改時間,判斷是否過期

使用filectime函式

<?php

$id = $_get['id'];

if (empty($id))

$cache_name = md5(__file__). '-' .$id. '.html';

$cache_lifetime = 3600;

//filectime(__file__)> filectime($cache_name) 判斷檔案是否已經修改

if ( filectime(__file__)> filectime($cache_name) && file_exists($cache_name) &&( filectime($cache_name) + $cache_lifetime > time()))

ob_start();

?>this is my script<?php

$content = ob_get_contents();

ob_end_flush();

$handle = fopen($cache_name, "w');

fwrite($handle, $content);

fclose($handle);

?>

ob 函式的使用

ob 函式的使用 1.頁面靜態化 id isset get id get id 0 0 filename html date ymd news id id.html if file exists html date ymd echo filename if file exists filename ...

PHP常見的ob系列函式

1 ob start 開啟緩衝區,所有輸出的資訊不直接傳送到瀏覽器,而是儲存在緩衝區裡面 2 ob clean 刪除內部緩衝區的內容,不關閉緩衝區 不輸出 3 ob end clean 刪除內部緩衝區的內容,關閉緩衝區 不輸出 4 ob get clean 返回內部緩衝區的內容,關閉緩衝區。相當於執...

OB函式echo的底層解釋

ob 系列的函式,其實本質就是對輸出的內容進行獲取處理。程式中有些內容,比如伺服器的資訊可以直接輸出 phpinfo 但是如果想儲存起來,就必須開啟緩衝區獲取。特別是靜態化的模板,需要對模板進行正則的各種處理,現在用的不多了,因為基本上前後端分離了。另外看起來很簡單的echo,這個是php的特殊結構...