php文件缓存类
2015-05-14 PHP 1425
/**
* 文件类型缓存类
*/
class Cache {
public $options;
/**
* 架构函数
* @access public
*/
public function __construct($options=array()) {
$options[\'path\'] = defined(CACHE
/**
* 文件类型缓存类
*/
class Cache {
public $options;
/**
* 架构函数
* @access public
*/
public function __construct($options=array()) {
$options['path'] = defined(CACHE_PATH) ? CACHE_PATH : './cache';
$options['expire'] = defined(CACHE_TIME) ? CACHE_TIME : 5;
$this->options = $options;
}
/**
* 取得变量的存储文件名
* @access private
* @param string $name 缓存变量名
* @return string
*/
private function filename($name){
$name = trim($name);
if(!empty($name)){
return $this->options['path'].'/'.$name.'.cache.php';
}else{
$this->halt('文件名不存在');
}
}
/**
* 读取缓存
* @access public
* @param string $name 缓存变量名
* @return mixed
*/
public function get($name) {
$ret = $this->_get($name);
//过期清除
if($ret['expire_time']!=0 && $ret['expire_time'] < time()){
$this->rm($name);
}
return $ret['data'];
}
/**
* 读取缓存
* @access private
* @param string $name 缓存变量名
* @return mixed
*/
private function _get($name) {
$content =file_get_contents( $this->filename($name) );
$ret = explode("\n",$content,2);
$data = preg_replace("/^return \'/",'',$ret[1]);
$data = preg_replace("/\';$/",'',$data);
return array(
'expire_time' => str_replace(' unserialize($data),
);
}
/**
* 写入缓存
* @access public
* @param string $name 缓存变量名
* @param mixed $value 存储数据
* @param int $expire 有效时间 0为永久
* @return boolean
*/
public function set($name,$value,$expire=0) {
//检查目录是否存在 不存在创建
if(!file_exists($this->options['path'])){
@mkdir($this->options['path'],0777,true);
}
//准备缓存数据
$data = serialize($value);
$content = 'options['expire'] >0 ? time()+$this->options['expire'] : 0)."\nreturn '".$data."';";
//存储文件
return file_put_contents($this->filename($name),$content);
}
/**
* 删除缓存
* @access public
* @param string $name 缓存变量名
* @return boolean
*/
public function rm($name) {
return unlink($this->filename($name));
}
/**
* 清除缓存
* @access public
* @param string $name 缓存变量名
* @return boolean
*/
public function clear($name) {
return unlink($this->filename($name));
}
/**
* 显示错误信息
*/
public function halt($msg){
echo 'Cache Error:'.$msg;
exit;
}
}
/**
*文件缓存
*@param string $key 键值
*@param mix $value 缓存的数据
*@param int $expire 缓存时间 单位秒(s)
*/
function F($key,$value=false,$expire=false){
$Cache = new Cache();
if($value !==false){
if($expire !== false){
return $Cache->set($key,$value,$expire);
}else{
return $Cache->set($key,$value);
}
}else{
return $Cache->get($key);
}
}
很赞哦! (0)
相关文章
文章评论
-
-
-
0条评论