PEAR教程(二)--Pear的Cache介紹_PHP教程

來源:互聯網
上載者:User

前面介紹了pear的安裝,今天開始介紹pear的幾個知名的package之一,如果有不清楚的地方請站內搜尋“PEAR教程”擷取前面的教程!

今天我們要介紹的是PEAR的Cache_Lite包,做web的說到提速眼睛瞪大的程度絕不亞於男人見到絕色美女時眼睛所瞪大的程度,因此,我這裡第一個要介紹的就是PEAR的Cache_lite包,利用這個package可以根據你的需要緩衝網頁的任何一個部分,從而大大的提高了頁面的產生和載入速度!

首先去Pear的List Packages下載Cache_Lite這個安裝包,寫這個教程的時候,穩定的版本是1.7.2,所以我們就下載這個版本,下載下來後解壓縮,然後將檔案放置在PEAR的根目錄下(檔案目錄如何組織,後面有介紹),然後我們去manual對應的章節看看如何使用。那些關於包的介紹你可以先看看,我們這裡沒有前戲,直接切入主題,下面是Cache_Lite::get()的例子。我們就從這個例子入手,我在例子中增加了中文的注釋


require_once"Cache/Lite.php";//這裡是相對PEAR的地址,找到剛才下載的包中Lite.php這個檔案後你就應該知道如何部署這個檔案夾了!
$options=array(
cacheDir=>/tmp/,//這裡是Cache的路徑,最好用絕對路徑,我們的例子中將會有說明
lifeTime=>7200,//緩衝的失效時間,秒為單位
pearErrorMode=>CACHE_LITE_ERROR_DIE//報錯模式
);
$cache=newCache_Lite($options);//參數設定完之後建立緩衝
if($data=$cache->get(id_of_the_page)){//如果id=id_of_the_page這個緩衝存在的話,則直接將快取資料echo出來
// Cache hit !
// Content is in $data
// (...)
}else{//緩衝不存在,則產生緩衝
// No valid cache found (you have to make and save the page)
// (...)
}

看了上面的這個例子,是不是發現很簡單?其實緩衝的關鍵之處不在於如何產生和刪除緩衝,而在於如何平衡緩衝靜止和動態關係,如何在適當的時候重建緩衝。下面我開始舉例,讓大家體會到緩衝的好處!,請在tutor(我們教程中的例子對應的根目錄)下建立檔案cache,*nix作業系統請設定屬性為0777,然後在tutor檔案夾下建立cache.php,輸入下面的代碼

< ?php
require_once"config.php";
require_once"Cache/Lite.php";
//下面的代碼是計算頁面執行時間,和cache無關
functionget_microtime()
{
list($usec,$sec)=explode( ,microtime());
return((float)$usec+(float)$sec);
}
$s= get_microtime();
//下面是緩衝的設定
$options=array(
cacheDir=> WEB_DIR."/cache/",
//請在tutor(我們教程中的例子對應的根目錄)
//下建立檔案cache,
//*nix作業系統請設定屬性為0777
lifeTime=>10,//10秒失效時間
pearErrorMode=> CACHE_LITE_ERROR_DIE
);
$cache=newCache_Lite($options);
$cache_id=cache;//id一定要唯一
//否則會和別人的cache出現衝突
if($data=$cache->get($cache_id)){
//data是擷取資料的結果,如果緩衝存在並且沒有到期,
//直接取出資料
echo$data;

}else{
//否則我們建立緩衝

//下面我們故意用迴圈來耗時
while($i<10000000)
$i++ ;
$data=緩衝建立的時間:.date("Y-m-d H:i:s");
$data.="

沒有緩衝執行的時間是:".(get_microtime()-$s)."秒";
echo$data;
$cache->save($data);

}
echo"

當前頁面耗時:".(get_microtime()-$s)."秒

";
?>
在瀏覽器中運行http://127.0.0.1/tutor/cache.php,然後看看cache的目錄下是不是產生了一個檔案,很有成就感吧?!
在web頁面我們發現第一次啟動並執行時間用時大約1秒,緩衝產生之後用時則只為原來的1/1000,這樣的效率就不需要我再多餘描述了吧!!其實上面這個例子的大體流程是,1.建立緩衝參數,包括緩衝的ID;2.根據參數和ID檢查緩衝是否存在,如果存在,則快取資料被擷取在$data變數中,然後echo出來,否則重建緩衝,將頁面的結果儲存在變數中,然後將變數的資料寫入緩衝。不過這樣的方式很不方便,因為所有的輸出我們必須將其寫到一個變數中,這樣其實是比較麻煩的,要用到很多字串串連,代碼很難維護,當然簡單的cache最好還是建議採用這樣的方式。不過你別擔心,強大的PEAR不會這麼弱智的,所以它也提供了另外一種方式,其實就是擷取緩衝區取出變數的方式,下面看看這個簡單的例子,對應的manual章節在這裡。

< ?php
require_once"config.php";

require_once"Cache/Lite/Output.php";
//注意,這裡require的檔案不一樣了哦
$options=array(
cacheDir=> WEB_DIR."/cache/",
lifeTime=>10,//10秒失效時間
pearErrorMode=> CACHE_LITE_ERROR_DIE
);
$cache=newCache_Lite_Output($options);
$cache_id=obcache;
if(!($cache->start($cache_id))){
//如果不存在,則建立緩衝,存在的話,程式自動就將緩衝輸出了
?>

這裡你想幹什麼就幹什麼,
包括執行php
包括資料庫查詢
只要是php允許的都可以在這裡完成
是不是很方便呢

< ?php
$cache->end();//這個千萬別忘記了,
//否則緩衝永遠建立不成功,
//這個函數就是在出來output buffer
}
?>

再去看看cache的目錄下是不是又多了一個檔案?
cache就介紹到這裡,下面有幾個需要注意的地方:
1.cache的ID一定要唯一,可以將一些參數整合進來
2.cache的緩衝路徑最好寫絕對路徑
3.本節的重點在於注釋,請仔細閱讀注釋

另外,通過我的介紹,如何刪除緩衝大家可以去看看對應的手冊了,上面的例子在於拋磚引玉,如果上面的例子你會用了,接下的快取作業應該不是難事了。

http://www.bkjia.com/PHPjc/486625.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/486625.htmlTechArticle前面介紹了pear的安裝,今天開始介紹pear的幾個知名的package之一,如果有不清楚的地方請站內搜尋“PEAR教程”擷取前面的教程! 今天我們...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.