程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> thinkphp緩存技術詳解

thinkphp緩存技術詳解

編輯:PHP綜合

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

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

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

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

Thinkphp緩存文件的配置

Home是我建立的前台項目,在Home\Conf\config.php找到緩存的配置文件,配置如下:
復制代碼 代碼如下:<?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',//設置緩存方式為file      
 'DATA_CACHE_TIME'=>'600',//緩存周期600秒      
);      
?>
Thinkphp緩存函數的使用

在thinkphp中,我喜歡使用快捷緩存函數S()進行緩存,其用法如下:
復制代碼 代碼如下:S('data',$Data);//使用data標識緩存$Data數據 
S('data',$Data,600);// 緩存$Data數據600秒 
$Data = S('data');// 獲取緩存數據 
S('data',NULL);// 刪除緩存數據
下面是是前台項目控制器的完整代碼:
復制代碼 代碼如下:<?php      
// 本類由系統自動生成,僅供測試用途      
 class IndexAction extends Action{      
   public function index(){      
       //如果有緩存,則讀取緩存數據      
       //如果沒有緩存,則讀取數據庫當中的數據放入緩存      
       $lists=S('lists');                    
       if(emptyempty($lists)){                          
         $news=M('news');  
         $lists=$news->select();  
         S('lists',$lists,600);  
         echo '這是直接讀取數據庫的數據';      
          }  
       dump($list); 
?>
訪問http://127.0.0.1/Home/index.php/Index/index 輸出,這是直接讀取數據庫的數據:
復制代碼 代碼如下:array(10) { 
  [0] => array(12) { 
    ["id"] => string(1) "1" 
    ["catid"] => string(2) "13" 
    ["title"] => string(4) "thinkphp的緩存技術" 
    ["content"] => string(8) "thinkphp的緩存技術" 
    ["tags"] => string(4) "緩存" 
    ["thumb"] => string(0) "" 
    ["description"] => string(7) "thinkphp的緩存技術" 
    ["inputtime"] => string(10) "1348370202" 
    ["posid"] => string(1) "1" 
    ["ord"] => string(1) "2" 
    ["hits"] => string(1) "1" 
    ["status"] => string(1) "1" 
}
說明,第一次運行時,會打印出如上面所示信息,刷新一下頁面後,少了“ 這是直接讀取數據庫的數據",說明讀取的是先前生成的緩存數據.

更多關於thinkPHP相關內容感興趣的讀者可查看本站專題:《ThinkPHP入門教程》及《ThinkPHP常用方法總結》

希望本文所述對大家基於ThinkPHP框架的PHP程序設計有所幫助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved