찾다
php教程php手册网站适用的PHP缓存类

缓存在实际使用当中应用很广泛,可以减轻对服务器数据库的访问,提高运行速度。目前很多CMS内容管理系统中频繁使用缓存机制来提高系统运行的效率。下面是一个写得不错的缓存类,可以参考下缓存的机制与写法。

cache.php 代码如下:

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


 

 

类的使用:

[php] view plaincopy  
  1.     define("_CachePath_","./cache/");    
  2.     define("_CacheEnable_","1");    
  3.     define("_ReCacheTime_","43200");    
  4.     include('cache.php');    
  5.     $cache=new cache();    
  6.     if ($cache->check())   
  7.     {    
  8.         $template=$cache->read();    
  9.     }  
  10.     else   
  11.     {    
  12.         ob_start();    
  13.         ob_implicit_flush(0);    
  14. ?>    
  15.     页面内容。。。。    
  16.         $template = ob_get_contents();    
  17.         $cache->write($template);    
  18.     }    
  19. ?>    


 

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 채팅 명령 및 사용 방법
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.