file文件缓存类文件: phpcmsv9 phpcms libs classes cache_file class PHP
class cache_file {/*缓存默认配置*/protected $_setting = array('suf' => '.cache.php', /*缓存文件后缀*/'type' => 'array', /*缓存格式:array数组,serialize序列化,null字符串*/);/*缓存路径*/protected $filepath = '';/*** 构造函数* @param array $setting 缓存配置* @return void*/public function __construct($setting = '') {$this->get_setting($setting);}/*** 写入缓存* @param string $name 缓存名称* @param mixed $data 缓存数据* @param array $setting 缓存配置* @param string $type 缓存类型* @param string $module 所属模型* @return mixed 缓存路径/false*/public function set($name, $data, $setting = '', $type = 'data', $module = ROUTE_M) {$this->get_setting($setting);if(empty($type)) $type = 'data';if(empty($module)) $module = ROUTE_M;$filepath = CACHE_PATH.'caches_'.$module.'/caches_'.$type.'/';$filename = $name.$this->_setting['suf'];if(!is_dir($filepath)) {mkdir($filepath, 0777, true);}if($this->_setting['type'] == 'array') {$data = "{C}";} elseif($this->_setting['type'] == 'serialize') {$data = serialize($data);}if ($module == 'commons' || ($module == 'commons' && substr($name, 0, 16) != 'category_content')) {$db = pc_base::load_model('cache_model');$datas = new_addslashes($data);if ($db->get_one(array('filename'=>$filename, 'path'=>'caches_'.$module.'/caches_'.$type.'/'), '`filename`')) {$db->update(array('data'=>$datas), array('filename'=>$filename, 'path'=>'caches_'.$module.'/caches_'.$type.'/'));} else {$db->insert(array('filename'=>$filename, 'path'=>'caches_'.$module.'/caches_'.$type.'/', 'data'=>$datas));}}//是否开启互斥锁if(pc_base::load_config('system', 'lock_ex')) {$file_size = file_put_contents($filepath.$filename, $data, LOCK_EX);} else {$file_size = file_put_contents($filepath.$filename, $data);}return $file_size ? $file_size : 'false';}/*** 获取缓存* @param string $name 缓存名称* @param array $setting 缓存配置* @param string $type 缓存类型* @param string $module 所属模型* @return mixed $data 缓存数据*/public function get($name, $setting = '', $type = 'data', $module = ROUTE_M) {$this->get_setting($setting);if(empty($type)) $type = 'data';if(empty($module)) $module = ROUTE_M;$filepath = CACHE_PATH.'caches_'.$module.'/caches_'.$type.'/';$filename = $name.$this->_setting['suf'];if (!file_exists($filepath.$filename)) {return false;} else {if($this->_setting['type'] == 'array') {$data = @require($filepath.$filename);} elseif($this->_setting['type'] == 'serialize') {$data = unserialize(file_get_contents($filepath.$filename));}return $data;}}/*** 删除缓存* @param string $name 缓存名称* @param array $setting 缓存配置* @param string $type 缓存类型* @param string $module 所属模型* @return bool*/public function delete($name, $setting = '', $type = 'data', $module = ROUTE_M) {$this->get_setting($setting);if(empty($type)) $type = 'data';if(empty($module)) $module = ROUTE_M;$filepath = CACHE_PATH.'caches_'.$module.'/caches_'.$type.'/';$filename = $name.$this->_setting['suf'];if(file_exists($filepath.$filename)) {if ($module == 'commons' && substr($name, 0, 16) != 'category_content') {$db = pc_base::load_model('cache_model');$db->delete(array('filename'=>$filename, 'path'=>'caches_'.$module.'/caches_'.$type.'/'));}return @unlink($filepath.$filename) ? true : false;} else {return false;}}/*** 和系统缓存配置对比获取自定义缓存配置* @param array $setting 自定义缓存配置* @return array $setting 缓存配置*/public function get_setting($setting = '') {if($setting) {$this->_setting = array_merge($this->_setting, $setting);}}public function cacheinfo($name, $setting = '', $type = 'data', $module = ROUTE_M) {$this->get_setting($setting);if(empty($type)) $type = 'data';if(empty($module)) $module = ROUTE_M;$filepath = CACHE_PATH.'caches_'.$module.'/caches_'.$type.'/';$filename = $filepath.$name.$this->_setting['suf'];if(file_exists($filename)) {$res['filename'] = $name.$this->_setting['suf'];$res['filepath'] = $filepath;$res['filectime'] = filectime($filename);$res['filemtime'] = filemtime($filename);$res['filesize'] = filesize($filename);return $res;} else {return false;}}}?>
感谢关注CMSYOU的朋友!关于PC V9的探讨,可以加V9群(QQ群号:346494585),以及论坛发帖:https://www.cmsyou.com/forum/。
点击加载更多