別のキャッシュ クラス

WBOY
WBOYオリジナル
2016-07-25 09:11:15963ブラウズ
キャッシュクラス
  1. /*
  2. * キャッシュクラスcache
  3. * 作成者: Duo Noob
  4. * 作成時間: 2006-05-05
  5. * 例:
  6. include( "cache.php" );
  7. $cache =新しいキャッシュ(30);
  8. $cache->cacheCheck();
  9. echo date("Y-m-d H:i:s");
  10. $cache->caching();
  11. */
  12. クラス キャッシュ {
  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. * Return : 更新時間内であればファイルの内容を返し、それ以外の場合は失敗を返します
  34. */
  35. function cacheCheck(){
  36. if( file_exists( $this->cacheFileName ) ) {
  37. $cTime = $this-> ;getFileCreateTime ( $this->cacheFileName );
  38. if( $cTime + $this->cacheLimitTime > time() ) {
  39. echo file_get_contents( $this->cacheFileName );
  40. ob_end_flush();
  41. exit;
  42. }
  43. }
  44. return false;
  45. }
  46. /*
  47. * キャッシュファイルまたは静的出力
  48. * string $staticFileName 静的ファイル名 (相対パスを含む)
  49. */
  50. function caching( $staticFileName = "" ){
  51. if( $this ->cacheFileName ) {
  52. $cacheContent = ob_get_contents();
  53. //echo $cacheContent;
  54. ob_end_flush();
  55. if( $staticFileName ) {
  56. $this->saveFile( $staticFileName, $cacheContent ) ;
  57. }
  58. if( $this->cacheLimitTime )
  59. $this->saveFile( $this->cacheFileName, $cacheContent );
  60. }
  61. }
  62. /*
  63. * キャッシュ ファイルをクリアします
  64. * string $fileName指定されたファイル名 (関数を含む) または all (all)
  65. * 戻り値: クリアに成功した場合は true、それ以外の場合は false
  66. */
  67. function clearCache( $fileName = "all" ) {
  68. if( $fileName != "all" ) {
  69. $fileName = $this->cacheRoot .strtoupper(md5($fileName)).".".$this->cacheFileExt;
  70. if( file_exists( $fileName ) ) {
  71. return @unlink( $fileName ) ;
  72. }else return false;
  73. }
  74. if ( is_dir( $this->cacheRoot ) ) {
  75. if ( $dir = @opendir( $this->cacheRoot ) ) {
  76. while ( $file = @readdir( $dir ) ) {
  77. $check = is_dir( $file );
  78. if ( !$check )
  79. @unlink( $this->cacheRoot . $file );
  80. }
  81. @closedir( $dir );
  82. return true ;
  83. }else{
  84. return false;
  85. }
  86. }else{
  87. return false;
  88. }
  89. }
  90. /*
  91. * 現在の動的ファイルに基づいてキャッシュ ファイル名を生成します
  92. */
  93. function getCacheFileName() {
  94. return $this->cacheRoot .strtoupper(md5($_SERVER["REQUEST_URI"])).".".$this->cacheFileExt;
  95. }
  96. /*
  97. * キャッシュ ファイルの作成時間
  98. * string $fileName name (相対パスを含む) )
  99. * 戻り値: ファイル生成時間 (秒)、ファイルが存在しない場合は 0 を返す
  100. */
  101. function getFileCreateTime( $fileName ) {
  102. if( ! トリム($fileName) ) return 0;
  103. if( file_exists( $fileName ) ) {
  104. return intval(filemtime( $fileName ));
  105. }else return 0;
  106. }
  107. /*
  108. * ファイルを保存します
  109. * string $fileName ファイル名 (相対パスを含む)
  110. * string $text ファイルの内容
  111. * Return: 成功した場合は true、失敗した場合は false を返します
  112. */
  113. function saveFile($fileName, $text) {
  114. if( ! $fileName || ! $text ) return false;
  115. if( $this->makeDir( dirname( $ fileName ) ) ) {
  116. if( $fp = fopen( $fileName, "w" ) ) {
  117. if( @fwrite( $fp, $text ) ) {
  118. fclose ($fp);
  119. return true;
  120. }else {
  121. fclose($fp);
  122. return false;
  123. }
  124. }
  125. }
  126. return false;
  127. }
  128. /*
  129. * ディレクトリを継続的に作成します
  130. * string $dir ディレクトリstring
  131. * int $mode 許可番号
  132. * return : 正常に作成されたか、すべてがビルドされている場合は true を返し、それ以外の場合は false を返します
  133. */
  134. function makeDir( $dir, $mode = "0777" ) {
  135. if( ! $dir ) return 0;
  136. $dir = str_replace( "\ ", "/", $dir );
  137. $mdir = "";
  138. foreach(explode( "/", $dir ) as $val ) {
  139. $mdir .= $val."/";
  140. if( $val == ".." || $val == "." || trim( $val ) == "" ) continue;
  141. if( ! file_exists( $mdir ) ) {
  142. if(!@mkdir( $mdir, $mode )){
  143. return false;
  144. }
  145. }
  146. }
  147. return true;
  148. }
  149. }
  150. ?>
コードをコピー


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。