亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > PHP > 正文

php 緩存技術

2024-05-04 21:48:10
字體:
來源:轉載
供稿:網友

關于緩存技術不只在php有,很多系統都有,這是為了減輕服務器壓力與數據庫壓力來做的,本文章從php緩存技術入門到利用緩存實例來告訴你如何應用php來實例文件緩存描述,

先看這個緩存類,代碼如下:

  1. class cache{ 
  2. /* 
  3. class name: cache 
  4. description: control to cache data,$cache_out_time is a array to save cache date time out. 
  5. version: 1.0 
  6. author: 老農 cjjer 
  7. last modify:2006-2-26 
  8. author url: http://www.111cn.net*/ 
  9. private $cache_dir
  10. private $expiretime=180;//緩存的時間是 60 秒 
  11. function __construct($cache_dirname){ 
  12.     if(!@is_dir($cache_dirname)){ 
  13.         if(!@mkdir($cache_dirname,0777)){ 
  14.         $this->warn('緩存文件不存在而且不能創建,需要手動創建.'); 
  15.         return false; 
  16.         } 
  17.     } 
  18. $this->cache_dir    =    $cache_dirname
  19. function __destruct(){ 
  20.     echo 'cache class bye.'
  21.  
  22. function get_url() { 
  23.         if (!isset($_server['request_uri'])) { 
  24.                 $url = $_server['request_uri']; 
  25.         }else
  26.                 $url = $_server['script_name']; 
  27.                 $url .= (!emptyempty($_server['query_string'])) ? '?' . $_server['query_string'] : ''
  28.         } 
  29.  
  30.         return $url
  31.  
  32. function warn($errorstring){ 
  33. echo "<b><font color='red'>發生錯誤:<pre>".$errorstring."</pre></font></b>"
  34.  
  35. function cache_page($pageurl,$pagedata){ 
  36.     if(!$fso=fopen($pageurl,'w')){ 
  37.         $this->warns('無法打開緩存文件.');//trigger_error 
  38.         return false; 
  39.     } 
  40.     if(!flock($fso,lock_ex)){//lock_nb,排它型鎖定 
  41.         $this->warns('無法鎖定緩存文件.');//trigger_error 
  42.         return false; 
  43.     } 
  44.     if(!fwrite($fso,$pagedata)){//寫入字節流,serialize寫入其他格式 
  45.         $this->warns('無法寫入緩存文件.');//trigger_error 
  46.         return false; 
  47.     } 
  48.     flock($fso,lock_un);//釋放鎖定 
  49.     fclose($fso); 
  50.     return true; 
  51.  
  52.  
  53. function display_cache($cachefile){ 
  54.             if(!file_exists($cachefile)){ 
  55.                 $this->warn('無法讀取緩存文件.');//trigger_error 
  56.                 return false; 
  57.             } 
  58.             echo '讀取緩存文件:'.$cachefile
  59. //return unserialize(file_get_contents($cachefile)); 
  60.         $fso = fopen($cachefile'r'); 
  61.         $data = fread($fsofilesize($cachefile)); 
  62.         fclose($fso); 
  63.     return $data
  64.  
  65. function readdata($cachefile='default_cache.txt'){ 
  66.     $cachefile    =    $this->cache_dir."/".$cachefile
  67.     if(file_exists($cachefile)&&filemtime($cachefile)>(time()-$this->expiretime)){ 
  68.         $data=$this->display_cache($cachefile); 
  69.         }else
  70.             $data="from here wo can get it from mysql教程 database,update time is <b>".date('l ds of f y h:i:s a')."</b>,過期時間是:".date('l ds of f y h:i:s a',time()+$this->expiretime)."----------"
  71.             $this->cache_page($cachefile,$data); 
  72.     } 
  73.         return $data
  74. //開源代碼Vevb.com  

下面我打斷這個代碼逐行解釋.

程序透析:這個緩存類(類沒什么好怕的.請繼續看)名稱是cache,有2個屬性:

private $cache_dir;

private $expiretime=180;

$cache_dir是緩存文件所放的相對網站目錄的父目錄,$expiretime(注釋一)是我們緩存的數據過期的時間,主要是這個思路:

當數據或者文件被加載的時候,先判斷緩存文件存在不,返回false ,文件最后修改時間和緩存的時間和比當前時間大不,大的話說明緩存還沒到期,小的話返回false,當返回false的時候,讀取原始數據,寫入緩存文件中,返回數據.,

接著看程序:

  1. function __construct($cache_dirname){ 
  2.     if(!@is_dir($cache_dirname)){ 
  3.         if(!@mkdir($cache_dirname,0777)){ 
  4.         $this->warn('緩存文件不存在而且不能創建,需要手動創建.'); 
  5.         return false; 
  6.         } 
  7.     } 
  8. $this->cache_dir    =    $cache_dirname

當類第一次被實例的時候構造默認函數帶參數緩存文件名稱,如文件不存在,創建一個有編輯權限的文件夾,創建失敗的時候拋出異常.然后把cache類的 $cache_dir屬性設置為這個文件夾名稱,我們的所有緩存文件都是在這個文件夾下面的,代碼如下:

  1. function __destruct(){ 
  2.     echo 'cache class byewww.49028c.com.'

這是class類的析構函數,為了演示,我們輸出一個字符串表示我們釋放cache類資源成功,代碼如下:

  1. function warn($errorstring){ 
  2. echo "<b><font color='red'>發生錯誤:<pre>".$errorstring."</pre></font></b>"

這個方法輸出錯誤信息,代碼如下:

  1. function get_url() { 
  2.         if (!isset($_server['request_uri'])) { 
  3.                 $url = $_server['request_uri']; 
  4.         }else
  5.                 $url = $_server['script_name']; 
  6.                 $url .= (!emptyempty($_server['query_string'])) ? '?' . $_server['query_string'] : ''
  7.         } 
  8.  
  9.         return $url

這個方法返回當前url的信息,這是我看國外很多人的cms系統這樣做,主要是緩存x.php?page=1,x.php?page=2,等這種文件的,這里列出是為了擴展的這個cache類功能的,代碼如下:

  1. function cache_page($pageurl,$pagedata){ 
  2.     if(!$fso=fopen($pageurl,'w')){ 
  3.         $this->warns('無法打開緩存文件.');//trigger_error 
  4.         return false; 
  5.     } 
  6.     if(!flock($fso,lock_ex)){//lock_nb,排它型鎖定 
  7.         $this->warns('無法鎖定緩存文件.');//trigger_error 
  8.         return false; 
  9.     } 
  10.     if(!fwrite($fso,$pagedata)){//寫入字節流,serialize寫入其他格式 
  11.         $this->warns('無法寫入緩存文件.');//trigger_error 
  12.         return false; 
  13.     } 
  14.     flock($fso,lock_un);//釋放鎖定 
  15.     fclose($fso); 
  16.     return true; 

cache_page方法分別傳入的是緩存的文件名稱和數據,這是把數據寫到文件里的方法,先用fopen打開文件,然后調用句柄鎖定這個文件,然后用fwrite寫入文件,最后釋放這個句柄,任何一步發生錯誤將拋出錯誤,您可能看到 這個注釋寫入字節流,serialize寫入其他格式,順便一提的是如果我們要把一個數組,(可以從mysql數據庫里面select查詢除了的結果)用serialize函數寫入,用unserialize讀取到原來的類型,代碼如下:

  1. function display_cache($cachefile){ 
  2.             if(!file_exists($cachefile)){ 
  3.                 $this->warn('無法讀取緩存文件.');//trigger_error 
  4.                 return false; 
  5.             } 
  6.             echo '讀取緩存文件:'.$cachefile
  7. //return unserialize(file_get_contents($cachefile)); 
  8.         $fso = fopen($cachefile'r'); 
  9.         $data = fread($fsofilesize($cachefile)); 
  10.         fclose($fso); 
  11.     return $data

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美放荡办公室videos4k| 福利一区视频在线观看| 欧美性猛交xxxx| 久久影视电视剧免费网站| 久久久国产视频91| 亚洲欧美国产高清va在线播| 4388成人网| 国产精品久久久av久久久| 97视频免费在线看| 色婷婷综合久久久久中文字幕1| 国产精选久久久久久| 97精品视频在线观看| 中文字幕少妇一区二区三区| 日韩av123| 亚洲欧美在线播放| 国产亚洲精品91在线| 久久久国产精彩视频美女艺术照福利| 久久久久久久久久婷婷| 美女av一区二区| 亚洲精品成人免费| 国产乱人伦真实精品视频| 亚洲图片制服诱惑| 欧美性猛交xxxx久久久| 97超碰色婷婷| 欧美激情一区二区三区久久久| 性欧美在线看片a免费观看| 91精品国产91久久久久福利| 亚洲精品xxxx| 日韩在线观看视频免费| 国产欧美日韩专区发布| 国产精品福利久久久| 孩xxxx性bbbb欧美| 精品久久久久久中文字幕| 狠狠色狠狠色综合日日小说| 日韩电影中文字幕在线观看| 国产精品日韩在线| 欧美激情亚洲一区| 国产精品三级美女白浆呻吟| 欧美成人午夜影院| 欧美一级黑人aaaaaaa做受| 国产精品视频免费在线观看| 丁香五六月婷婷久久激情| 中文国产成人精品久久一| 国产成人avxxxxx在线看| 欧美精品情趣视频| 亚洲精品二三区| 欧美www视频在线观看| 992tv成人免费视频| 法国裸体一区二区| 亚洲一区二区三区在线免费观看| 在线视频欧美性高潮| 91精品视频观看| 国产精品视频在线观看| 91免费福利视频| 91久久国产综合久久91精品网站| 欧美性受xxx| 亚洲欧洲在线观看| 精品成人久久av| 亚洲国产高潮在线观看| 国产美女精彩久久| 狠狠久久五月精品中文字幕| 国产日产久久高清欧美一区| 欧美精品久久久久久久免费观看| 中文字幕欧美视频在线| 粉嫩av一区二区三区免费野| 国产精品久久久久久搜索| 欧美日韩国产一中文字不卡| 疯狂做受xxxx高潮欧美日本| 亚洲www视频| 国产99久久精品一区二区| 国外成人免费在线播放| 日韩国产欧美精品一区二区三区| 久热国产精品视频| 日韩精品中文字幕在线| 国产一区深夜福利| 亚洲第一男人天堂| 久久在线精品视频| 国产不卡在线观看| 日韩一区二区精品视频| 国产不卡av在线| 国产精品国产三级国产aⅴ9色| 亚洲欧美制服综合另类| 国产成人精品亚洲精品| 欧美性生交xxxxx久久久| 国产精品一区二区久久久| 亚洲一区二区三区乱码aⅴ蜜桃女| **欧美日韩vr在线| 欧美激情精品久久久久久变态| 亚洲视频视频在线| 日韩欧美一区二区在线| 欧美午夜www高清视频| 欧美有码在线观看| 成人激情视频在线播放| 国产精品偷伦免费视频观看的| 久久久久久久999| 久久免费福利视频| 久久免费视频网站| 色系列之999| 国产在线精品一区免费香蕉| 一个人www欧美| 色综合天天综合网国产成人网| 欧美美女15p| 正在播放欧美视频| 国产一区二区三区四区福利| 午夜精品久久久久久久男人的天堂| 国产欧美精品日韩精品| 久久久www成人免费精品| 日韩av在线网站| 在线成人中文字幕| 成人黄色影片在线| 亚洲欧美制服综合另类| 亚洲国产天堂久久综合网| 欧美一级片久久久久久久| 深夜福利国产精品| 亚洲精品720p| 欧美在线视频网站| 国产精品露脸自拍| 亚洲精品中文字| 在线播放国产精品| 欧美日韩精品国产| 日韩美女主播视频| 日韩视频中文字幕| 亚洲va国产va天堂va久久| 伊人久久大香线蕉av一区二区| 日韩精品极品视频免费观看| 亚洲人成在线免费观看| 欧美日韩国产精品一区| 欧美激情啊啊啊| 日韩欧美精品中文字幕| 国产精品精品视频一区二区三区| 俺去了亚洲欧美日韩| 国产精品免费久久久| 色综合视频网站| 91夜夜揉人人捏人人添红杏| 一个人看的www久久| 久久欧美在线电影| 91av中文字幕| 久久中文字幕视频| 亚洲欧美日韩天堂一区二区| 久久99亚洲热视| 欧美一级免费视频| 狠狠躁夜夜躁人人爽天天天天97| 欧美激情精品久久久久| 亚洲欧美另类自拍| 久久免费精品视频| 日韩电影免费在线观看| 成人欧美一区二区三区在线| 最新日韩中文字幕| 亚洲国产精品大全| 亚洲欧美日韩中文在线制服| 欧美性生交大片免网| 在线观看日韩视频| 欧美日韩在线观看视频| 亚洲男人天堂手机在线| 亚洲国产又黄又爽女人高潮的| 欧美精品久久久久久久久久| 欧美高清视频在线| 国产精品久久77777| 久久久久久成人| 国产在线一区二区三区| 亚洲欧美综合v| 久久伊人色综合| 成人免费xxxxx在线观看| 欧美黄色三级网站|