建站帮助

诚信合作, 高质专业!

Phpcms V9系统中file文件缓存机制相关文件

2016-07-13 16:53:00 浏览 我要评论
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),以及论坛发帖:http://www.cmsyou.com/forum/
我要收藏
点个赞吧

相关阅读

本月热门

精选推荐

在线客服

扫一扫,关注我们

扫一扫,关注我们