<?php
class Cache{
//缓存类
private $dir ;
private $end = '.txt';
function __construct(){
$this->dir = dirname(__FILE__).'/file/';
}
/**
* [SetCache 设置缓存]
* @zeo
* @DateTime 2016-11-08
* @param string $key [文件名]
* @param string $content [缓存内容(若需使用回调缓存需为空)]
* @param int $expires [过期时间]
* @param string $fallback [回调方法名(缓存返回值)]
* @param array $params [传递参数]
* @return bool
*/
public function SetCache($key,$content='',$expires=0,$fallback='',$params=array()){
$filename = $this->dir.$key.$this->end;
$dir = dirname($filename);
if(!is_dir($dir)){
mkdir($dir,0777);
}
$data['time'] = time();
$data['expries'] = (int)$expires;
if($content){
$data['data'] = $content;
return file_put_contents($filename,json_encode($data));
}
if($fallback){
$data['data'] = call_user_func_array($fallback,$params);
return file_put_contents($filename,json_encode($data));
}else{
return false;
}
}
//获取缓存
public function getCache($key=''){
$filename = $this->dir.$key.$this->end;
if($key){
$data = json_decode(file_get_contents($filename),true);
if(time()>($data['time']+$data['expires'])){
return $data['data'];
}else{
unlink($filename);
return false;
}
}else{
return false;
}
}
//删除缓存
public function DelCache($key=''){
$filename = $this->dir.$key.$this->end;
if(empty($key)){
return $this->clearDir();
}
if(!is_file($filename)){
return false;
}else{
return unlink($filename);
}
}
//清空目录
private function clearDir(){
if($handle = opendir($this->dir)){
while(false!==($item = readdir($handle))){
if($item!="."&&$item!=".."){
return unlink("$this->dir/$item");
}
}
}else{
return false;
}
}
}