首頁  >  文章  >  後端開發  >  再來一個快取類

再來一個快取類

WBOY
WBOY原創
2016-07-25 09:11:15934瀏覽
快取類
  1. /*
  2. * 快取類別cache
  3. * 作者:多菜鳥
  4. * 建立時間:2006-05-05
  5. * 實例:
  6. include( "cache.php" );
  7. $cache = new cache(30);
  8. $cache->cacheCheck();
  9. echo date("Y-m-d H:i: s");
  10. $cache->caching();
  11. */
  12. class cache {
  13. //快取目錄
  14. var $cacheRoot = "./cache/";
  15. //快取更新時間秒數,0為不快取
  16. var $cacheLimitTime = 0;
  17. //快取檔案名稱
  18. var $cacheFileName = "";
  19. //快取副檔名
  20. var $cacheFileExt = "php";
  21. /*
  22. * 建構子
  23. * int $cacheLimitTime 快取更新時間
  24. */
  25. function cache( $cacheLimitTime ) {
  26. if( intval ( $cacheLimitTime ) )
  27. $this->cacheLimitTime = $cacheLimitTime;
  28. $this->cacheFileName = $this->getCacheFileName();
  29. ob_start();
  30. }
  31. }
  32. /**
  33. * 檢查快取檔案是否在設定更新時間內
  34. * 傳回:如果在更新時間之內則傳回檔案內容,反之則回傳失敗
  35. */
  36. function cacheCheck(){
  37. if( file_exists( $this->cacheFileName ) ) {
  38. $cTime = $this->getFileCreateTime( $this->cacheFileName );
  39. if( $cTime + $this->cacheLimitTime > time() ) {
  40. echo file_get_contents( $this->cacheFileName );
  41. ob_end_flush();
  42. exit;
  43. }
  44. }
  45. return false;
  46. }
  47. }
  48. return false;
  49. }
  50. }
  51. return false;
  52. }
  53. }
  54. return false;
  55. }
  56. }
  57. return false;
  58. }
  59. }
  60. 返回🎜> * 快取檔案或輸出靜態
  61. * string $staticFileName 靜態檔案名稱(含相對路徑)
  62. */
  63. function caching( $staticFileName = "" ){
  64. if( $this-> cacheFileName ) {
  65. $cacheContent = ob_get_contents();
  66. //echo $cacheContent;
  67. ob_end_flush();
  68. if( $staticFileName ) { $this. $staticFileName, $cacheContent );
  69. }
  70. if( $this->cacheLimitTime )
  71. $this->saveFile( $this->cacheFileName, $cacheContent. >}
  72. /*
  73. * 清除快取檔案
  74. * string $fileName 指定檔案名稱(含函數)或all(全部)
  75. * 傳回:清除成功回傳true,反之回傳false
  76. */
  77. function clearCache( $fileName = "all" ) {
  78. if( $fileName != "all" ) {
  79. $fileName = $this->cacheRoot . strtoupper(md5($fileName))) .".".$this->cacheFileExt;
  80. if( file_exists( $fileName ) ) {
  81. return @unlink( $fileName );
  82. }else return false;
  83. }
  84. if
  85. if ( is_dir( $this->cacheRoot ) ) {
  86. if ( $dir = @opendir( $this->cacheRoot ) ) {
  87. while ( $file = @readdir( $dir ) ) {
  88. $ while ( $file = @readdir( $dir ) ) {
  89. $ while ( $file = @readdir( $dir ) ) {
  90. $ while ( $file = @readdir( $dir ) ) {
  91. $ while ( $file = @readdir( $dir ) ) {
  92. $ while ( $file = @readdir( $dir ) ) {
  93. $ 時> $ check = is_dir( $file );
  94. if ( !$check )
  95. @unlink( $this->cacheRoot . $file );
  96. }
  97. @closedir( $dir );
  98. return true;
  99. }else{
  100. return false;
  101. }
  102. }else{
  103. return false;
  104. }
  105. }
  106. /*
  107. * 根據目前。動態檔案產生快取檔案名稱
  108. */
  109. function getCacheFileName() {
  110. return $this->cacheRoot . strtoupper(md5($_SERVER["REQUEST_URI"])).".".$this-md5($_SERVER["REQUEST_URI"])).".".$this- >cacheFileExt;
  111. }
  112. /*
  113. * 快取檔案建立時間
  114. * string $fileName 快取檔案名稱(含相對路徑)
  115. * 傳回:檔案產生時間秒數,檔案不存在回傳0
  116. */
  117. function getFileCreateTime( $fileName ) {
  118. if( ! trim($fileName) ) return 0;
  119. if( file_exists( $fileName )> return intval(filemtime( $fileName ));
  120. }else return 0;
  121. }
  122. /*
  123. * 儲存檔案
  124. * string $fileName 檔案名稱(含相對路徑)
  125. * string $text 檔案內容
  126. * 回傳:成功回傳ture,失敗回傳false
  127. */
  128. function saveFile($fileName, $text) {
  129. if( ! $fileName || ! $text ) return false;
  130. if( $this->makeDir( dirname( $fileName ) ) ) {
  131. if( $fp = fopen( $fileName, "w" ) ) {
  132. if( @fwrite( $fp, $text ) ) {
  133. fclose($fp);
  134. return true;
  135. }else {
  136. fclose($fp);
  137. return false;
  138. fclose($fp);
  139. return false;
  140. }
  141. }
  142. }
  143. return false;
  144. }
  145. /*
  146. * 連續建目錄
  147. * string $dir 目錄字串
  148. * int $mode 數字
  149. * 回傳:順利建立或全部已建置回傳true,其它方式回傳false
  150. */
  151. function makeDir( $dir, $mode = "0777" ) {
  152. if( ! $dir ) return 0;
  153. $dir = str_replace( "\", "/", $dir );
$mdir = "";
foreach( explode( "/", $dir ) as $val ) { $mdir .= $val."/"; if( $val == ".." || $val == "." || trim( $val ) == " " ) continue; if( ! file_exists( $mdir ) ) { if(!@mkdir( $mdir, $mode )){ return false; } } } } } } } } } } } } } } } } } } } return true;}}?>複製程式碼


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn