您的位置:首页 > 编程语言 > PHP开发

PHP缓存操作类

2013-10-31 10:22 239 查看
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>
<?php
include('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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: