国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > PHP > 正文

thinkphp緩存技術(shù)詳解

2024-05-04 23:28:46
字體:
供稿:網(wǎng)友
這篇文章主要介紹了thinkphp緩存技術(shù),詳細(xì)分析了緩存技術(shù)的特點(diǎn)以及在ThinkPHP中緩存的實(shí)際應(yīng)用技巧,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
 
 

本文詳細(xì)分析了thinkphp的緩存技術(shù)。分享給大家供大家參考。具體分析如下:

如果沒有緩存的網(wǎng)站是百萬級(jí)或者千萬級(jí)的訪問量,會(huì)給數(shù)據(jù)庫或者服務(wù)器造成很大的壓力,通過緩存,大幅減少服務(wù)器和數(shù)據(jù)庫的負(fù)荷,假如我們把讀取數(shù)據(jù)的過程分為三個(gè)層,第一個(gè)是訪問層,第一個(gè)是緩存層,第三個(gè)是數(shù)據(jù)庫存取層,如果沒有緩存層,訪問層是直接從數(shù)據(jù)庫存取層讀取數(shù)據(jù),而設(shè)置緩存后,訪問層不再是直接在數(shù)據(jù)庫存取層讀取,而是從緩存層讀取數(shù)據(jù).

我們做個(gè)簡單的對(duì)比,假設(shè)一個(gè)頁面,在一個(gè)小時(shí)可被訪問100萬次,如果這個(gè)頁面每次被訪問的時(shí)候,都直接讀取數(shù)據(jù)庫后再編譯生成,在一個(gè)小時(shí)內(nèi)將會(huì)重復(fù)性的生成100萬次,而如果這個(gè)頁面被周期性的緩存10分鐘,也就是每間隔10分鐘緩存數(shù)據(jù)才會(huì)被生成一次,一個(gè)小時(shí)內(nèi)只會(huì)被生成6次,兩種方式一對(duì)比,效果明顯,兩種比較下服務(wù)器負(fù)荷的壓力比差別十幾萬倍以上,緩存技術(shù)將使得網(wǎng)站負(fù)載在高峰期游刃有余.

thinkphp的緩存方式有許多種,如File、Apachenote、Apc、Eaccelerator、Memcache、Shmop、Sqlite、Db、Redis和Xcache,現(xiàn)在我來說一下File緩存。

Thinkphp緩存文件的配置

Home是我建立的前臺(tái)項(xiàng)目,在Home/Conf/config.php找到緩存的配置文件,配置如下:

復(fù)制代碼代碼如下:
<?php   
  return array(       
  'DB_TYPE'=>'mysql',       
  'DB_HOST'=>'127.0.0.1',       
 'DB_NAME'=>'w3note',       
  'DB_USER'=>'root',       
 'DB_PWD'=>'123456',       
 'DB_PORT'=>'3306',       
 'DB_PREFIX'=>'w3_',       
 'DATA_CACHE_TYPE'=>'file',//設(shè)置緩存方式為file       
 'DATA_CACHE_TIME'=>'600',//緩存周期600秒       
);       
?>

Thinkphp緩存函數(shù)的使用

 

在thinkphp中,我喜歡使用快捷緩存函數(shù)S()進(jìn)行緩存,其用法如下:

復(fù)制代碼代碼如下:
S('data',$Data);//使用data標(biāo)識(shí)緩存$Data數(shù)據(jù)  
S('data',$Data,600);// 緩存$Data數(shù)據(jù)600秒  
$Data = S('data');// 獲取緩存數(shù)據(jù)  
S('data',NULL);// 刪除緩存數(shù)據(jù)

下面是是前臺(tái)項(xiàng)目控制器的完整代碼:
復(fù)制代碼代碼如下:
<?php       
// 本類由系統(tǒng)自動(dòng)生成,僅供測試用途       
 class IndexAction extends Action{       
   public function index(){       
       //如果有緩存,則讀取緩存數(shù)據(jù)       
       //如果沒有緩存,則讀取數(shù)據(jù)庫當(dāng)中的數(shù)據(jù)放入緩存       
       $lists=S('lists');                     
       if(emptyempty($lists)){                           
         $news=M('news');   
         $lists=$news->select();   
         S('lists',$lists,600);   
         echo '這是直接讀取數(shù)據(jù)庫的數(shù)據(jù)';       
          }   
       dump($list);  
?>

訪問http://127.0.0.1/Home/index.php/Index/index 輸出,這是直接讀取數(shù)據(jù)庫的數(shù)據(jù):
復(fù)制代碼代碼如下:
array(10) {  
  [0] => array(12) {  
    ["id"] => string(1) "1"  
    ["catid"] => string(2) "13"  
    ["title"] => string(4) "thinkphp的緩存技術(shù)"  
    ["content"] => string(8) "thinkphp的緩存技術(shù)"  
    ["tags"] => string(4) "緩存"  
    ["thumb"] => string(0) ""  
    ["description"] => string(7) "thinkphp的緩存技術(shù)"  
    ["inputtime"] => string(10) "1348370202"  
    ["posid"] => string(1) "1"  
    ["ord"] => string(1) "2"  
    ["hits"] => string(1) "1"  
    ["status"] => string(1) "1"  
}

說明,第一次運(yùn)行時(shí),會(huì)打印出如上面所示信息,刷新一下頁面后,少了“ 這是直接讀取數(shù)據(jù)庫的數(shù)據(jù)",說明讀取的是先前生成的緩存數(shù)據(jù).

 

希望本文所述對(duì)大家基于ThinkPHP框架的PHP程序設(shè)計(jì)有所幫助。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 莱芜市| 台中县| 久治县| 南木林县| 永丰县| 涟源市| 台州市| 宁乡县| 杂多县| 嘉峪关市| 安徽省| 囊谦县| 平山县| 博爱县| 扶余县| 衡阳市| 文水县| 城固县| 嘉鱼县| 大连市| 开封县| 鲁山县| 繁昌县| 金沙县| 天峻县| 江永县| 遂宁市| 托克逊县| 建昌县| 右玉县| 台北市| 永州市| 讷河市| 治多县| 壶关县| 嘉义市| 兴化市| 青冈县| 栾川县| 洞头县| 巧家县|