
<? |
/* |
用户需要事先定义的常量: |
_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); |
} |
} |
} |
} |
?> |



