部署在腾讯CEE+CMEM环境下的thinkPHP如何清理缓存

浏览:1683 发布日期:2013/08/23 分类:功能实现 关键字: 腾讯应用 CEE CMEM
使用环境为腾讯CEE+CMEM+CDB如何清理缓存。。。
部署在普通服务器的缓存可以通过删除换存目录来实现清理缓存的目的,但CEE是svn环境,缓存其实保存在CMEM,这个时候通过以前的办法就不能清理缓存了,现在讲讲如何清理掉cee+cmem应用中的缓存。<code>
<?php
 
class cacheAction extends baseAction {
 
    protected $viewfiles = array();//模板文件
     
    public function clear_cache() {
        if (IS_CLOUD) {
            //取得所有模板文件
            $this->viewFielSearch();
            if(!empty($this->viewfiles)){
                foreach ($this->viewfiles as $k => $f) {
                    //取得分组
                    $group = '';
                    $groups = explode(',', C('app_group_list'));
                    foreach ($groups as $g) {
                        if(false !== strpos($f, $g)){
                            $group = $g . '/';
                        }
                    }
                    //生成缓存文件名
                    $cachefile = CACHE_PATH . $group . md5($f).C('TMPL_CACHFILE_SUFFIX') . '.php';
                    if(F($cachefile) !== false){
                        F($cachefile,NULL);
                    }
                }
            }
            $tables = M()->db()->getTables();
            foreach ($tables as $val) {
                $db = C('DB_NAME');
                $table = substr($val, strlen(C('DB_PREFIX')));
                $key = '_fields/' . strtolower($db . '.' . $table);
                F($key, NULL);
            }
        } else {
            $obj_dir = new Dir;
            is_dir(DATA_PATH . '_fields/') && $obj_dir->del(DATA_PATH . '_fields/');
            is_dir(CACHE_PATH) && $obj_dir->delDir(CACHE_PATH);
            is_dir(DATA_PATH) && $obj_dir->del(DATA_PATH);
            is_dir(TEMP_PATH) && $obj_dir->delDir(TEMP_PATH);
            is_dir(LOG_PATH) && $obj_dir->delDir(LOG_PATH);
            is_dir(MLSF_DATA_PATH . '/static/') && $obj_dir->del(MLSF_DATA_PATH . '/static/');
            @unlink(RUNTIME_FILE);
        }
        $this->ajaxReturn(1, L('clear_success'));
    }
 
    //遍历文件夹函数
    // $dir 初始文件夹
    // @author LiaoCaiXin
    private function viewFielSearch($dir="./app/Tpl"){
            if(is_dir($dir)&&file_exists($dir)){
                $ob=scandir($dir);
                foreach($ob as $file){
                    if($file=="."||$file==".."){
                        continue;
                    }
                    $file=$dir."/".$file;
                    if(is_file($file)){
                        $this->viewfiles[] = $file;
                    }elseif(is_dir($file)){
                        $this->viewFielSearch($file);
                    }
                }
            }
        }
}
</code>
原文地址:http://www.molibei.com/article/4.htm
评论( 相关
后面还有条评论,点击查看>>