php缓存类,PHP缓存类详解

参数详解如下:

第一个参数:缓存二级目录

第二个参数:缓存时间  默认1800

第三个参数:是否需要三级目录  0:不需要  1 需要  默认0

第四个参数:缓存后缀  默认 .html

调用方法:

$cache = new php_cache('index');

$cache = new php_cache('index',1800);

$cache = new php_cache('index',1800,1);

$cache = new php_cache('index',1800,1,'.html');

class php_cache{

public function __construct($file_dir,$cache_time=1800,$file_two=0,$file_fix='.htm'){

$this->cache_root=dirname(__FILE__).'/../cache';//缓存存放目录

$this->file_dir=$file_dir;

$this->cache_time=$cache_time;

$this->file_two=$file_two;

$this->file_fix=$file_fix;

$this->file_name=md5($_SERVER['REQUEST_URI']).$this->file_fix;//缓存文件名

$this->cache_file=$this->cache_dir=$this->cache_root.'/'.$this->file_dir;//缓存的二级文件夹

if($this->file_two==1)$this->cache_dir=$this->cache_root.'/'.$this->file_dir.'/'.substr($this->file_name,0,2);//缓存的最终文件夹

$this->cache_url=$this->cache_dir.'/'.$this->file_name;//文件存放的完整路径

//GET方式请求才缓存,POST之后一般都希望看到最新的结果

if($_SERVER['REQUEST_METHOD']=='GET'){

//如果缓存文件存在,并且没有过期,就把它读出来。

if(file_exists($this->cache_url) && time()-filemtime($this->cache_url)cache_time){

$fp=fopen($this->cache_url,'rb');

fpassthru($fp);

fclose($fp);

exit;

}elseif(!file_exists($this->cache_dir)){//判断文件夹是否存在,不存在则创建

if(!file_exists($this->cache_file)){

if(!file_exists($this->cache_root)){

mkdir($this->cache_root,0777);

chmod($this->cache_root,0777);

}

mkdir($this->cache_file,0777);

chmod($this->cache_file,0777);

if($this->file_two==1){

mkdir($this->cache_dir,0777);

chmod($this->cache_dir,0777);

}

}

}

//回调函数 AutoCache

//ob_start("AutoCache");

ob_start(array($this, "AutoCache"));

}else{

//不是GET的请求就删除缓存文件

if(file_exists($this->cache_url))unlink($this->cache_url);

}

}

function AutoCache($contents){

$fp=fopen($this->cache_url,'wb');

fwrite($fp,$contents);

fclose($fp);

chmod($this->cache_url,0777);

//生成新缓存的同时,自动删除所有的老缓存,以节约空间,可忽略。

$this->DelOldCache();

return $contents;

}

function DelOldCache(){

chdir($this->cache_root);

foreach (glob("*/*".$this->file_fix) as $file){

if(time()-filemtime($file)>$this->cache_time)unlink($file);

}

}

}

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值