当前位置:首页 > PHP教程 > php类库 > 列表

php文件缓存类文件

发布:smiling 来源: PHP粉丝网  添加日期:2014-08-28 10:09:38 浏览: 评论:0 

本人给大家推一个不错php文件缓存类文件,从各方面来看本缓存类很合理并且适用于大型网站使用,php文件缓存类文件代码如下:

  1. <?php 
  2. class Cache { 
  3.  /** 缓存目录 **/ 
  4.  var $CacheDir        = './c'
  5.  /** 缓存的文件 **/ 
  6.  var $CacheFile        = ''
  7.  /** 文件缓存时间(分钟) **/ 
  8.  var $CacheTime        = 0; 
  9.  /** 文件是否已缓存 **/ 
  10.  var $CacheFound        = False; 
  11.  /** 错误及调试信息 **/ 
  12.  var $DebugMsg        = NULL; 
  13.  
  14.  function Cache($CacheTime = 0) { 
  15.   $this->CacheTime    = $CacheTime
  16.  } 
  17.  
  18.  private function Run() { 
  19.   /** 缓存时间大于0,检测缓存文件的修改时间,在缓存时间内为缓存文件名,超过缓存时间为False, 
  20.                 小于等于0,返回false,并清理已缓存的文件 
  21.          **/ 
  22.   Return $this->CacheTime ? $this->CheckCacheFile() : $this->CleanCacheFile(); 
  23.  } 
  24.  function GetCache($VistUrl,$CacheFileType = 'html'
  25.  { 
  26.   $this->SetCacheFile($VistUrl,$CacheFileType); 
  27.  
  28.   $fileName=$this->CheckCacheFile(); 
  29.   if($fileName
  30.   { 
  31.    $fp = fopen($fileName,"r"); 
  32.    $content_fread($fpfilesize($fileName)); 
  33.    fclose($fp); 
  34.    return $content_
  35.   } 
  36.   else 
  37.   { 
  38.    return false; 
  39.   } 
  40.  } 
  41.  private function SetCacheFile($VistUrl,$CacheFileType = 'html') { 
  42.   if(emptyempty($VistUrl)) { 
  43.    /** 默认为index.html **/ 
  44.    $this->CacheFile = 'index'
  45.   }else { 
  46.    /** 传递参数为$_POST时 **/ 
  47.    $this->CacheFile = is_array($VistUrl) ? implode('.',$VistUrl) : $VistUrl
  48.   } 
  49.   $this->CacheFile = $this->CacheDir.'/'.md5($this->CacheFile); 
  50.   $this->CacheFile.= '.'.$CacheFileType
  51.  } 
  52.  
  53.  function SetCacheTime($t = 60) { 
  54.   $this->CacheTime = $t
  55.  } 
  56.  
  57.  private function CheckCacheFile() { 
  58.   if(!$this->CacheTime || !file_exists($this->CacheFile)) {Return False;} 
  59.   /** 比较文件的建立/修改日期和当前日期的时间差 **/ 
  60.   $GetTime=(Time()-Filemtime($this->CacheFile))/(60*1); 
  61.   /** Filemtime函数有缓存,注意清理 **/ 
  62.   Clearstatcache(); 
  63.   $this->Debug('Time Limit '.($GetTime*60).'/'.($this->CacheTime*60).''); 
  64.   $this->CacheFound = $GetTime <= $this->CacheTime ? $this->CacheFile : False; 
  65.   Return $this->CacheFound; 
  66.  } 
  67.  
  68.  function SaveToCacheFile($VistUrl,$Content,$CacheFileType = 'html') { 
  69.   $this->SetCacheFile($VistUrl,$CacheFileType); 
  70.   if(!$this->CacheTime) { 
  71.    Return False; 
  72.   } 
  73.   /** 检测缓存目录是否存在 **/ 
  74.   if(true === $this->CheckCacheDir()) { 
  75.    $CacheFile = $this->CacheFile; 
  76.    $CacheFile = str_replace('//','/',$CacheFile); 
  77.    $fp = @fopen($CacheFile,"wb"); 
  78.    if(!$fp) { 
  79.     $this->Debug('Open File '.$CacheFile.' Fail'); 
  80.    }else { 
  81.     if(@!fwrite($fp,$Content)){ 
  82.      $this->Debug('Write '.$CacheFile.' Fail'); 
  83.     }else { 
  84.      $this->Debug('Cached File'); 
  85.     }; 
  86.     @fclose($fp); 
  87.    } 
  88.   }else { 
  89.    /** 缓存目录不存在,或不能建立目录 **/ 
  90.    $this->Debug('Cache Folder '.$this->CacheDir.' Not Found'); 
  91.   } 
  92.  } 
  93.  
  94.  private function CheckCacheDir() { 
  95.   if(file_exists($this->CacheDir)) { Return true; } 
  96.   /** 保存当前工作目录 **/ 
  97.   $Location = getcwd(); 
  98.   /** 把路径划分成单个目录 **/ 
  99.   $Dir = split("/"$this->CacheDir); 
  100.   /** 循环建立目录 **/ 
  101.   $CatchErr = True; 
  102.   for ($i=0; $i<count($Dir); $i++){ 
  103.    if (!file_exists($Dir[$i])){ 
  104.     /** 建立目录失败会返回False 返回建立最后一个目录的返回值 **/ 
  105.     $CatchErr = @mkdir($Dir[$i],0777); 
  106.    } 
  107.    @chdir($Dir[$i]); 
  108.   } 
  109.   /** 建立完成后要切换到原目录 **/ 
  110.   chdir($Location); 
  111.   if(!$CatchErr) { 
  112.    $this->Debug('Create Folder '.$this->CacheDir.' Fail'); 
  113.   } 
  114.   Return $CatchErr
  115.  } 
  116.  
  117.  private function CleanCacheFile() { 
  118.   if(file_exists($this->CacheFile)) { 
  119.    @chmod($this->CacheFile,777); 
  120.    @unlink($this->CacheFile); 
  121.   } 
  122.   /** 置没有缓存文件 **/ 
  123.   $this->CacheFound = False; 
  124.   Return $this->CacheFound; 
  125.  } 
  126.  
  127.  function Debug($msg='') { 
  128.   if(DEBUG) { 
  129.    $this->DebugMsg[] = '[Cache]'.$msg
  130.   } 
  131.  } 
  132.  
  133.  function GetError() { 
  134.   Return emptyempty($this->DebugMsg) ? '' : "<br>n".implode("<br>n",$this->DebugMsg);//开源代码phpfensi.com 
  135.  } 
  136. }/* end of class */ 
  137. ?>

Tags: php文件缓存 php缓存类

分享到: