【一个实用的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); 
//返回当前页的所有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); 
?> 
页面内容。。。。 
$template = ob_get_contents(); 
$cache->write($template); 
} 
?> 

缓存在实际使用当中应用很广泛,可以减轻对服务器数据库的访问,提高运行速度。目前很多CMS内容管理系统中频繁使用缓存机制来提高系统运行的效率。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 共20条
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    没有评论内容