麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > PHP > 正文

PHP實現的簡單緩存類

2024-05-04 23:38:20
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了PHP實現的簡單緩存類,實例分析了php緩存文件的定義及使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下

本文實例講述了PHP實現的簡單緩存類。分享給大家供大家參考。具體如下:

cache.inc.php:

 

 
  1. <?php 
  2. class Cache { 
  3. /** 
  4. * $dir : 緩存文件存放目錄 
  5. * $lifetime : 緩存文件有效期,單位為秒 
  6. * $cacheid : 緩存文件路徑,包含文件名 
  7. * $ext : 緩存文件擴展名(可以不用),這里使用是為了查看文件方便 
  8. */ 
  9. private $dir; 
  10. private $lifetime; 
  11. private $cacheid; 
  12. private $ext; 
  13. /** 
  14. * 析構函數,檢查緩存目錄是否有效,默認賦值 
  15. */ 
  16. function __construct($dir='',$lifetime=1800) { 
  17. if ($this->dir_isvalid($dir)) { 
  18. $this->dir = $dir; 
  19. $this->lifetime = $lifetime; 
  20. $this->ext = '.Php'
  21. $this->cacheid = $this->getcacheid(); 
  22. /** 
  23. * 檢查緩存是否有效 
  24. */ 
  25. private function isvalid() { 
  26. if (!file_exists($this->cacheid)) return false
  27. if (!(@$mtime = filemtime($this->cacheid))) return false
  28. if (mktime() - $mtime > $this->lifetime) return false
  29. return true
  30. /** 
  31. * 寫入緩存 
  32. * $mode == 0 , 以瀏覽器緩存的方式取得頁面內容 
  33. * $mode == 1 , 以直接賦值(通過$content參數接收)的方式取得頁面內容 
  34. * $mode == 2 , 以本地讀取(fopen ile_get_contents)的方式取得頁面內容(似乎這種方式沒什么必要) 
  35. */ 
  36. public function write($mode=0,$content='') { 
  37. switch ($mode) { 
  38. case 0: 
  39. $content = ob_get_contents(); 
  40. break
  41. default
  42. break
  43. ob_end_flush(); 
  44. try { 
  45. file_put_contents($this->cacheid,$content); 
  46. catch (Exception $e) { 
  47. $this->error('寫入緩存失敗!請檢查目錄權限!'); 
  48. /** 
  49. * 加載緩存 
  50. * exit() 載入緩存后終止原頁面程序的執行,緩存無效則運行原頁面程序生成緩存 
  51. * ob_start() 開啟瀏覽器緩存用于在頁面結尾處取得頁面內容 
  52. */ 
  53. public function load() { 
  54. if ($this->isvalid()) { 
  55. echo "<span style='display:none;'>This is Cache.</span> "
  56. //以下兩種方式,哪種方式好????? 
  57. require_once($this->cacheid); 
  58. //echo file_get_contents($this->cacheid); 
  59. exit(); 
  60. else { 
  61. ob_start(); 
  62. /** 
  63. * 清除緩存 
  64. */ 
  65. public function clean() { 
  66. try { 
  67. unlink($this->cacheid); 
  68. catch (Exception $e) { 
  69. $this->error('清除緩存文件失敗!請檢查目錄權限!'); 
  70. /** 
  71. * 取得緩存文件路徑 
  72. */ 
  73. private function getcacheid() { 
  74. return $this->dir.md5($this->geturl()).$this->ext; 
  75. /** 
  76. * 檢查目錄是否存在或是否可創建 
  77. */ 
  78. private function dir_isvalid($dir) { 
  79. if (is_dir($dir)) return true
  80. try { 
  81. mkdir($dir,0777); 
  82. catch (Exception $e) { 
  83. $this->error('所設定緩存目錄不存在并且創建失敗!請檢查目錄權限!'); 
  84. return false;  
  85. return true
  86. /** 
  87. * 取得當前頁面完整url 
  88. */ 
  89. private function geturl() { 
  90. $url = ''
  91. if (isset($_SERVER['REQUEST_URI'])) { 
  92. $url = $_SERVER['REQUEST_URI']; 
  93. else { 
  94. $url = $_SERVER['Php_SELF']; 
  95. $url .= empty($_SERVER['QUERY_STRING'])?'':'?'.$_SERVER['QUERY_STRING']; 
  96. return $url; 
  97. /** 
  98. * 輸出錯誤信息 
  99. */ 
  100. private function error($str) { 
  101. echo '<div style="color:red;">'.$str.'</div>'
  102. ?> 

demo.php:

 

 
  1. <?php 
  2. /* 
  3. * 可自由轉載使用,請保留版權信息,謝謝使用! 
  4. * Class Name : Cache (For Php5) 
  5. * Version : 1.0 
  6. * Description : 動態緩存類,用于控制頁面自動生成緩存、調用緩存、更新緩存、刪除緩存. 
  7. * Last Modify : 2007-8-22 
  8. * Remark : 
  9. 1.此版本為Php5版本,本人暫沒有寫Php4的版本,如需要請自行參考修改(比較容易啦,不要那么懶嘛,呵呵!). 
  10. 2.此版本為utf-8編碼,如果網站采用其它編碼請自行轉換,Windows系統用記事本打開另存為,選擇相應編碼即可(一般ANSI),Linux下請使用相應編輯軟件或iconv命令行. 
  11. 3.拷貝粘貼的就不用管上面第2條了. 
  12. * 關于緩存的一點感想: 
  13. * 動態緩存和靜態緩存的根本差別在于其是自動的,用戶訪問頁面過程就是生成緩存、瀏覽緩存、更新緩存的過程,無需人工操作干預. 
  14. * 靜態緩存指的就是生成靜態頁面,相關操作一般是在網站后臺完成,需人工操作(也就是手動生成). 
  15. */ 
  16. /* 
  17. * 使用方法舉例*/ 
  18. //Demo1: 
  19. require_once('cache.inc.php'); 
  20. $cachedir = './Cache/'//設定緩存目錄 
  21. $cache = new Cache($cachedir,10); //省略參數即采用缺省設置, $cache = new Cache($cachedir); 
  22. if ($_GET['cacheact'] != 'rewrite'//此處為一技巧,通過xx.Php?cacheact=rewrite更新緩存,以此類推,還可以設定一些其它操作 
  23. $cache->load(); //裝載緩存,緩存有效則不執行以下頁面代碼 
  24. //頁面代碼開始 
  25. echo date('H:i:s jS F'); 
  26. //頁面代碼結束 
  27. $cache->write(); //首次運行或緩存過期,生成緩存 
  28. //Demo2: 
  29. require_once('cache.inc.php'); 
  30. $cachedir = './Cache/'//設定緩存目錄 
  31. $cache = new Cache($cachedir,10); //省略參數即采用缺省設置, $cache = new Cache($cachedir); 
  32. if ($_GET['cacheact'] != 'rewrite'//此處為一技巧,通過xx.Php?cacheact=rewrite更新緩存,以此類推,還可以設定一些其它操作 
  33. $cache->load(); //裝載緩存,緩存有效則不執行以下頁面代碼 
  34. //頁面代碼開始 
  35. $content = date('H:i:s jS F'); 
  36. echo $content; 
  37. //頁面代碼結束 
  38. $cache->write(1,$content); //首次運行或緩存過期,生成緩存 
  39. //Demo3: 
  40. require_once('cache.inc.php'); 
  41. define('CACHEENABLE',true); 
  42. if (CACHEENABLE) { 
  43. $cachedir = './Cache/'//設定緩存目錄 
  44. $cache = new Cache($cachedir,10); //省略參數即采用缺省設置, $cache = new Cache($cachedir); 
  45. if ($_GET['cacheact'] != 'rewrite'//此處為一技巧,通過xx.Php?cacheact=rewrite更新緩存,以此類推,還可以設定一些其它操作 
  46. $cache->load(); //裝載緩存,緩存有效則不執行以下頁面代碼  
  47. //頁面代碼開始 
  48. $content = date('H:i:s jS F'); 
  49. echo $content; 
  50. //頁面代碼結束 
  51. if (CACHEENABLE) 
  52. $cache->write(1,$content); //首次運行或緩存過期,生成緩存 
  53. ?> 

希望本文所述對大家的php程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 牛牛碰在线 | 国产一区二区精彩视频 | 国产精品成人久久久久a级 av电影在线免费 | 一级观看免费完整版视频 | 午夜久久久精品一区二区三区 | 久久国产精品二区 | 亚洲第一成人久久网站 | 黄色av片三级三级三级免费看 | 亚洲3atv精品一区二区三区 | 美国黄色毛片女人性生活片 | 亚州综合 | 宅男视频在线观看免费 | 一级电影免费 | 国产一级aaa全黄毛片 | 精品黑人一区二区三区国语馆 | 欧美精品免费一区二区三区 | 精品亚洲成a人在线观看 | 黄wwww| 天天撸日日夜夜 | 欧美一级黄视频 | 亚洲小视频在线 | 午夜伦情电午夜伦情电影 | 91成人一区二区三区 | 久久老司机 | 久久久综合久久久 | 久久久www成人免费精品 | 免费小毛片 | 国产精品久久亚洲 | 亚洲小视频在线播放 | 草莓视频久久 | 欧美视屏一区二区 | 九九爱视频 | 高清做爰免费无遮网站挡 | 久久久久亚洲美女啪啪 | 久久久久久久91 | 精品国产一区二区三区天美传媒 | 日韩 综合 | 欧美毛片 | 成人做爰高潮片免费视频韩国 | 狠狠干91| 日朝毛片|