• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

一个实用的PHP缓存类

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
代码
<?  

 
/*  
 用户需要事先定义的常量:  

 _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);  

  
//返回当前页的所有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);  

  }  

  
?> 

 

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
PHP入门03--数组与数据结构发布时间:2022-07-10
下一篇:
PHPmkdir()无写权限的问题解决方法发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap