一聚教程网:一个值得你收藏的教程网站

热门教程

php文件缓存实例代码

时间:2022-06-24 18:21:58 编辑:袖梨 来源:一聚教程网

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); 
        //返回当前页的所有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的最后更新时间 
                cachefilevar);$var=$var[0">$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); 
        } 
        ?> 

热门栏目