缓存类代码:
[PHP] 纯文本查看 复制代码 /**
* 缓存类: 在某些场景下,如调用api、对数据库内某些常用的字段进行调用时可以使用缓存,免去多次调用.
*/
class cache
{
const EH = 3600;
const ERROR_NOT_FOUND = "错误: 缓存文件不存在.";
/**
* 构造方法: 检测是否存在缓存目录.
*/
public function __construct(){
if(!file_exists("./cache/")){
mkdir("./cache/");
}
}
/**
* 成员方法: 设置缓存内容.
* [String] $cache_name: 缓存集合名.
* [Array] $cache_data: 缓存数据正文.
* [String] $cache_file: 缓存数据存贮的文件名 (可选).
* [Int] $cache_update_time: 缓存超时时间 (可选).
*/
public function set_cache($cache_name , $cache_data , $cache_file = "data.json" , $cache_update_time = 120){
//检测是否为数组
if(!is_array($cache_data)){
TpPrint::common_print(ErrorGroup::ERROR_NOT_ARRAY , "错误提示");
return ErrorGroup::ERROR_NOT_ARRAY;
}
if(!file_exists("./cache/".$cache_name."/")){
//创建缓存目录及默认文件
mkdir("./cache/".$cache_name);
}
$cache_config = array("cache_name"=>$cache_name,"cache_update_time"=>$cache_update_time);
$cache_data["cache_regtime"] = time();
if ( file_put_contents("./cache/".$cache_name."/config.json",json_encode($cache_config,JSON_UNESCAPED_UNICODE)) == false
|| file_put_contents("./cache/$cache_name/$cache_file",json_encode($cache_data,JSON_UNESCAPED_UNICODE)) == false ){
return false;
}
return $cache_data;
}
/**
* 成员方法: 静态获取缓存数据.
* [String] $cache_name: 缓存集合名.
* [String] $cache_file: 缓存数据存贮的文件名 (可选).
*/
public function cache_static_get_data($cache_name , $cache_file = "data.json"){
//检测是否存在缓存
if($this->cache_exists($cache_name , $cache_file) != true){
TpPrint::common_print($this::ERROR_NOT_FOUND , "错误提示");
return $this::ERROR_NOT_FOUND;
}
$cache_data_json = file_get_contents("./cache/".$cache_name."/".$cache_file);
$cache_data = json_decode($cache_data_json , true);
return $cache_data;
}
/**
* 成员方法: 检测缓存数据是否超时.
* [String] $cache_name: 缓存集合名.
* [String] $cache_file: 缓存数据存贮的文件名 (可选).
*/
public function cache_is_overtime($cache_name , $cache_file = "data.json"){
//检测是否存在缓存
if($this->cache_exists($cache_name , $cache_file) != true){
TpPrint::common_print($this::ERROR_NOT_FOUND , "错误提示");
return $this::ERROR_NOT_FOUND;
}
$cache_config = $this->cache_static_get_data($cache_name , "config.json");
$cache_data = $this->cache_static_get_data($cache_name , $cache_file);
$time = time();
$dvalue = $time-$cache_data["cache_regtime"];
if($dvalue > $cache_config["cache_update_time"]){
return true;
}
return false;
}
/**
* 成员方法: 检测缓存数据是否存在.
* [String] $cache_name: 缓存集合名.
* [String] $cache_file: 缓存数据存贮的文件名 (可选).
*/
public function cache_exists($cache_name , $cache_file = "data.json"){
//检测是否存在缓存
if(file_exists("./cache/".$cache_name."/".$cache_file)){
return true;
}
return false;
}
/**
* 成员方法: 删除缓存
* [String] $cache_name: 缓存集合名.
* [String] $cache_file: 缓存数据存贮的文件名 (可选).
*/
public function cache_delete($cache_name , $cache_file = "data.json"){
//检测是否存在缓存
if($this->cache_exists($cache_name , $cache_file)){
if(unlink("$cache_name/$cache_file")){
return true;
}
return false;
}
return $this::ERROR_NOT_FOUND;
}
}
|