Server : nginx/1.22.1 System : Linux iZwz9daxib3w3i063fw434Z 3.10.0-1127.19.1.el7.x86_64 #1 SMP Tue Aug 25 17:23:54 UTC 2020 x86_64 User : www ( 1000) PHP Version : 5.6.40 Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv Directory : /www/wwwroot/www.jkmold.com/phpcms/libs/classes/ |
<?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 = "<?php\nreturn ".var_export($data, true).";\n?>"; } 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; } } } ?>