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

简单实用的网站PHP缓存类实例

发布:smiling 来源: PHP粉丝网  添加日期:2021-03-22 11:34:02 浏览: 评论:0 

这篇文章主要介绍了简单实用的网站PHP缓存类,对于大家学习及理解缓存的机制与运行原理大有好处,需要的朋友可以参考下。

缓存技术在实际使用当中应用非常广泛,可以有效减轻对服务器数据库的访问压力,提高运行速度。目前很多CMS内容管理系统中频繁使用缓存机制来提高系统运行的效率。本文以一个简单实用的缓存类为例,帮助大家参考下缓存的机制与写法。

缓存文件cache.php代码如下:

  1. <?php   
  2. /*  
  3. 用户需要事先定义的常量:  
  4. _CachePath_    模板缓存路径  
  5. _CacheEnable_    自动缓存机制是否开启,未定义或为空,表示关闭自动缓存机制  
  6. _ReCacheTime_    自动重新缓存间隔时间,单位为秒,未定义或为空,表示关闭自动重新缓存  
  7. */  
  8. class cache   
  9. {  
  10.   var $cachefile;   
  11.   var $cachefilevar;   
  12.   function cache()   
  13.   {   
  14.     //生成当前页的Cache组文件名 $this->cachefilevar 及文件名 $this->cachefile   
  15.     //动态页的参数不同对应的Cache文件也不同,但是每一个动态页的所有Cache文件都有相同的文件名,只是扩展名不同   
  16.     $s=array(".","/");$r=array("_","");   
  17.     $this->cachefilevar=str_replace($s,$r,$_SERVER["SCRIPT_NAME"])."_".$_GET[_ActionVar_];   
  18.     $this->cachefile=$this->cachefilevar.".".md5($_SERVER["REQUEST_URI"]);   
  19.   }   
  20.   //删除当前页/模块的缓存   
  21.   function delete()   
  22.   {   
  23.     //删除当前页的缓存   
  24.     $d = dir(_CachePath_);   
  25.     $strlen=strlen($this->cachefilevar);   
  26.     //返回当前页的所有太原264医院Cache文件组   
  27.     while (false !== ($entry = $d->read()))   
  28.     {   
  29.       if (substr($entry,0,$strlen)==$this->cachefilevar)   
  30.       {   
  31.         if (!unlink(_CachePath_."/".$entry)) {echo "Cache目录无法写入";exit;}   
  32.       }   
  33.     }   
  34.   }   
  35.   //判断是否已Cache过,以及是否需要Cache   
  36.   function check()   
  37.   {   
  38.     //如果设置了缓存更新间隔时间 _ReCacheTime_   
  39.     if (_ReCacheTime_+0>0)  
  40.     {   
  41.       //返回当前页Cache的最后更新时间   
  42.       $var=@file(_CachePath_."/".$this->cachefilevar);$var=$var[0];   
  43.       //如果更新时间超出更新间隔时间则删除Cache文件   
  44.       if (time()-$var>_ReCacheTime_)   
  45.       {   
  46.         $this->delete();$ischage=true;   
  47.       }   
  48.     }   
  49.     //返回当前页的Cache   
  50.     $file=_CachePath_."/".$this->cachefile;   
  51.     //判断当前页Cache是否存在 且 Cache功能是否开启   
  52.     return (file_exists($fileand _CacheEnable_ and !$ischange);   
  53.   }   
  54.   //读取Cache   
  55.   function read()   
  56.   {   
  57.     //返回当前页的Cache   
  58.     $file=_CachePath_."/".$this->cachefile;   
  59.     //读取Cache文件的内容   
  60.     if (_CacheEnable_) return readfile($file);   
  61.     else return false;   
  62.   }   
  63.   //生成Cache   
  64.   function write($output)   
  65.   {   
  66.     //返回当前页的Cache   
  67.     $file=_CachePath_."/".$this->cachefile;   
  68.     //如果Cache功能开启   
  69.     if (_CacheEnable_)   
  70.     {   
  71.       //把输出的内容写入Cache文件   
  72.       $fp=@fopen($file,'w');   
  73.       if (!@fputs($fp,$output)) {echo "模板Cache写入失败";exit;}   
  74.       @fclose($fp);   
  75.       //如果设置了缓存更新间隔时间 _ReCacheTime_   
  76.       if (_ReCacheTime_+0>0)   
  77.       {   
  78.         //更新当前页Cache的最后更新时间   
  79.         $file=_CachePath_."/".$this->cachefilevar;   
  80.         $fp=@fopen($file,'w');   
  81.         if (!@fwrite($fp,time())) {echo "Cache目录无法写入";exit;}   
  82.         @fclose($fp);   
  83.       }   
  84.     }   
  85.   }   
  86. }   
  87. ?> 

缓存类的使用:

  1. <?php   
  2.   define("_CachePath_","./cache/");   
  3.   define("_CacheEnable_","1");   
  4.   define("_ReCacheTime_","43200");   
  5.   include('cache.php');   
  6.   $cache=new cache();   
  7.   if ($cache->check())   
  8.   {   
  9.     $template=$cache->read();   
  10.   }  
  11.   else  
  12.   {   
  13.     ob_start();   
  14.     ob_implicit_flush(0);   
  15. ?>   

此处为页面内容。。。。  

  1. <?php   
  2.     $template = ob_get_contents();   
  3.     $cache->write($template);   
  4.   }   
  5. ?> 

Tags: PHP缓存类

分享到: