PHP缓存操作类

来源:互联网 发布:linux将用户添加到组 编辑:程序博客网 时间:2024/06/04 20:05

1,cache.class.php缓存操作类

<?php/**+---------------------------------------------------------- * franklin 缓存操作类 +---------------------------------------------------------- * 文件名称  cache.class.php +---------------------------------------------------------- * 文件描述  缓存操作类 +---------------------------------------------------------- * 作 者  +---------------------------------------------------------- * 时 间  2012-05-05 +---------------------------------------------------------- **/ class cache{//查询参数protected $options=array();//缓存次数protected $cacheCount=0;//缓存时间protected $cachetime=60;//缓存路径protected $cachePath='cache/';//数据返回类型, 1代表数组, 2代表对象protected $returnType=1;/** * 读取缓存 * @param string $id  缓存名称 * @param int $time 缓存有效时间,默认为60秒,0为永远失效 * @param string $path缓存文件存放路径 * @accesspublic readCache * @returnmixed如果读取成功返回缓存内容, 否则返回NULL **/ public function readCache($id,$time,$Path=''){$id=md5($id);$this->cachePath=empty($Path)?$this->cachePath:$Path;$this->cachetime=empty($time)?$this->cachetime:$time;$file=$this->cachePath.$id.'.php';if(file_exists($file)){//缓存过期if((filemtime($file)+$time)<time()){@unlink($file);return NULL;}if(1===$this->returnType){$row=include $file;}else{$data=file_get_contents($file);$row=unserialize($data);//取出数据,储存的资料以byte-stream方式存放。返回值为混合类型,包括整数、倍精确浮点数字符串、数组以及类的属性。}return $row;}return NULL;}/*** 写入缓存** @accesspublic* @param mixed$data缓存内容* @returnbool是否写入成功**/public function writeCache($id,$data,$Path=''){$this->cacheCount++;$id=md5($id);$this->cachePath=empty($Path)?$this->cachePath:$Path;$file=$this->cachePath.$id.'.php';chmod($this->cachePath,777);if(1===$this->returnType){$data='<?php return '.var_export($data, TRUE).'; ?>';//var_export()函数返回关于传递给该函数的变量的结构信息.}else{$data=serialize($data);//以byte-stream方式储存资料到系统中,变量 value 为混合类型,包括整数、倍精确浮点数字符串、数组以及类的属性.}return file_put_contents($file, $data);}/** * 删除指定缓存 * * @accesspublic * @param mixed$id缓存名称 * @returnbool是否删除成功 **/ public function delCache($id,$Path=''){ $id=md5($id);$this->cachePath=empty($Path)?$this->cachePath:$Path;$file=$this->cachePath.$id.'.php';if(file_exists($file)){return unlink($file);}return NULL;}/** * 删除所有缓存 * * @accesspublic * @param mixed$dir缓存名称 * @returnbool清除所有缓存是否成功 **/ public function delAllCache($Path=''){ $id=md5($id);$this->cachePath=empty($Path)?$this->cachePath:$Path;$path=$this->cachePath;if(is_dir($path)){if($dh=opendir($path)){while(($file=readdir($dh))!==false){if($file!='..'&$file!='.'){if(is_dir($path.'/'.$file)){if(!delDir($path.'/'.$file)){return 0;}}else{if(!unlink($path.'/'.$file)){return 0;}}}}closedir($dh);}return 1;}}}


2,缓存类的使用cache.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>无标题文档</title></head><body><?phpinclude('cache.class.php');$data=array('http://www.phpernote.com','http://www.baidu.com','http://www.google.cn');$cache=new cache();$id='test';//写入缓存$cache->writeCache($id,$data);//读缓存并打印$name_row=$cache->readCache($id,120);print_r($name_row);//删除某个变量$cache->delCache($id);//删除全部缓存$cache->delAllCache();?></body></html>

原创粉丝点击