加入收藏 | 设为首页 | 会员中心 | 我要投稿 梅州站长网 (https://www.0753zz.cn/)- 行业物联网、云备份、数据工具、云计算、智能推荐!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2022-06-22 09:11:02 所属栏目:PHP教程 来源:互联网
导读:这篇文章主要介绍了简单实用的网站PHP缓存类,对于大家学习及理解缓存的机制与运行原理大有好处,需要的朋友可以参考下。 缓存技术在实际使用当中应用非常广泛,可以有效减轻对服务器数据库的访问压力,提高运行速度。目前很多CMS内容管理系统中频繁使用缓存机
  这篇文章主要介绍了简单实用的网站PHP缓存类,对于大家学习及理解缓存的机制与运行原理大有好处,需要的朋友可以参考下。
 
  缓存技术在实际使用当中应用非常广泛,可以有效减轻对服务器数据库的访问压力,提高运行速度。目前很多CMS内容管理系统中频繁使用缓存机制来提高系统运行的效率。本文以一个简单实用的缓存类为例,帮助大家参考下缓存的机制与写法。
 
  缓存文件cache.php代码如下:
 
  <?php   
  /*  
  用户需要事先定义的常量:  
  _CachePath_    模板缓存路径  
  _CacheEnable_    自动缓存机制是否开启,未定义或为空,表示关闭自动缓存机制  
  _ReCacheTime_    自动重新缓存间隔时间,单位为秒,未定义或为空,表示关闭自动重新缓存  
  */  
  class cache   
  {  
    var $cachefile;   
    var $cachefilevar;   
    function cache()   
    {   
      //生成当前页的Cache组文件名 $this->cachefilevar 及文件名 $this->cachefile   
      //动态页的参数不同对应的Cache文件也不同,但是每一个动态页的所有Cache文件都有相同的文件名,只是扩展名不同   
      $s=array(".","/");$r=array("_","");   
      $this->cachefilevar=str_replace($s,$r,$_SERVER["SCRIPT_NAME"])."_".$_GET[_ActionVar_];   
      $this->cachefile=$this->cachefilevar.".".md5($_SERVER["REQUEST_URI"]);   
    }   
    //删除当前页/模块的缓存   
    function delete()   
    {   
      //删除当前页的缓存   
      $d = dir(_CachePath_);   
      $strlen=strlen($this->cachefilevar);   
      //返回当前页的所有太原264医院Cache文件组   
      while (false !== ($entry = $d->read()))   
      {   
        if (substr($entry,0,$strlen)==$this->cachefilevar)   
        {   
          if (!unlink(_CachePath_."/".$entry)) {echo "Cache目录无法写入";exit;}   
        }   
      }   
    }   
    //判断是否已Cache过,以及是否需要Cache   
    function check()   
    {   
      //如果设置了缓存更新间隔时间 _ReCacheTime_   
      if (_ReCacheTime_+0>0)  
      {   
        //返回当前页Cache的最后更新时间   
        $var=@file(_CachePath_."/".$this->cachefilevar);$var=$var[0];   
        //如果更新时间超出更新间隔时间则删除Cache文件   
        if (time()-$var>_ReCacheTime_)   
        {   
          $this->delete();$ischage=true;   
        }   
      }   
      //返回当前页的Cache   
      $file=_CachePath_."/".$this->cachefile;   
      //判断当前页Cache是否存在 且 Cache功能是否开启   
      return (file_exists($file) and _CacheEnable_ and !$ischange);   
    }   
    //读取Cache   
    function read()   
    {   
      //返回当前页的Cache   
      $file=_CachePath_."/".$this->cachefile;   
      //读取Cache文件的内容   
      if (_CacheEnable_) return readfile($file);   
      else return false;   
    }   
    //生成Cache   
    function write($output)   
    {   
      //返回当前页的Cache   
      $file=_CachePath_."/".$this->cachefile;   
      //如果Cache功能开启   
      if (_CacheEnable_)   
      {   
        //把输出的内容写入Cache文件   
        $fp=@fopen($file,'w');   
        if (!@fputs($fp,$output)) {echo "模板Cache写入失败";exit;}   
        @fclose($fp);   
        //如果设置了缓存更新间隔时间 _ReCacheTime_   
        if (_ReCacheTime_+0>0)   
        {   
          //更新当前页Cache的最后更新时间   
          $file=_CachePath_."/".$this->cachefilevar;   
          $fp=@fopen($file,'w');   
          if (!@fwrite($fp,time())) {echo "Cache目录无法写入";exit;}   
          @fclose($fp);   
        }   
      }   
    }   
  }   
  ?>
  缓存类的使用:
 
  <?php   
    define("_CachePath_","./cache/");   
    define("_CacheEnable_","1");   
    define("_ReCacheTime_","43200");   
    include('cache.php');   
    $cache=new cache();   
    if ($cache->check())   
    {   
      $template=$cache->read();   
    }  
    else  
    {   
      ob_start();   
      ob_implicit_flush(0);   
  ?>   
  此处为页面内容。。。。  
 
  <?php   
      $template = ob_get_contents();   
      $cache->write($template);   
    }   
  ?>
 

(编辑:梅州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读