konakona
Dream Afar.
konakona
ThinkPHP 后台用清除缓存程序代码

介于部门里许多网站程序经常改动,当开启ThinkPHP的缓存时,改了程序文件后很容易产生错误。

制作这个功能可以让产品人员们在后台有自主权可以清空缓存,不必每次都让程序上服务器去搞。

https://blog.img.crazyphper.com/2011/12/ffff.jpg

 

特点:

不删除文件夹、不删除svn文件、不删除Logs日志文件夹、记录删除失败数和失败文件名,方便纠错或提升文件权限(这点对Linux系统比较好)。

下面直接上程序代码(就不搞HTML了)。

ClearCacheAction.class.php

 

/**
 * 清空缓存
 * User: konakona
 * Date: 11-12-5
 * Time: 下午4:36
 * $Id: ClearCacheAction.class.php 3521 2011-12-06 06:46:12Z xiong $
 */
class ClearCacheAction extends konakonaAction{

	//网站根目录绝对路径
	public $webDir ; 

    //删除文件失败总数
    public $errorNum = 0;

    //记录删除失败的文件名
    public $errorFile = array();

    public function index(){
        $this->display('options:cache_index');
    }

    public function clear(){

		$this->webDir = str_replace ( "\\", "/", substr ( __FILE__, 0, - 41 ) );

        if($_POST['is_admin'] && $_POST['is_home']){    //全站缓存清除

            if($this->clearRuntime("admin")===false || $this->clearRuntime("home") === false){
                if($this->errorNum > 0){
                    $this->formSubmitJson('300','清空全站缓存文件时,失败了'.$this->errNum.'次!');
                }else{
                    $this->formSubmitJson('300','打开缓存目录失败!请检查缓存目录权限是否足够!');
                }
            }else{
                $this->formSubmitJson('200','清空成功!');
            }

        }else{  // 清楚部分缓存
            $name = $_POST['is_admin']? 'admin' : 'home';
            if($this->clearRuntime($name)===false){
                if($this->errorNum > 0){
                    $this->formSubmitJson('300','清空后台缓存文件时,失败了'.$this->errNum.'次!');
                    //            echo '失败了'.$this->errorNum.'次
';
                    //            foreach($this->errorFile as $k=>$v){
                    //                echo $v.'
';
                    //            }
                }else{
                    $this->formSubmitJson('300','打开缓存目录失败!请检查缓存目录权限是否足够!');
                }
            }else{
                $this->formSubmitJson('200','清空成功!');
            }
        }
    }

    /**
     * 清空后台的缓存
     * @param string name
     * @return void
     */
    private function clearRuntime($name){

        $runtimeRir = $this->web_dir.$name."/Runtime/";

        $rp = opendir($runtimeRir);
        if($rp===false)
            return false;

        while (false !== ($file = readdir($rp))) {
            if($file != "." || $file != ".."){

                if($file == 'Logs' || $file == "." || $file == ".." || $file == ".svn") continue;

                if($file == "Cache" || $file == "Data" || $file == "Temp"){   //各个缓存文件夹,遍历它并且清空它
                    if(false !== ($cache_rp = opendir($runtimeRir.$file))){
                        while (false !== ($cache_file = readdir($cache_rp))) {

                            //这样做的好处是可以避免svn文件也被删除,如果你不希望被删除的话,保留这段代码
                            if(!is_dir($cache_file)){
                                if(unlink($runtimeRir."$file/".$cache_file)===false){
                                    $this->errorNum ++ ;
                                    $this->errorFile[] = $file;
                                }
                            }

                        }
                    }else{
                        return false;
                    }
                }elseif(!is_dir($file)){
                    if(unlink($runtimeRir.$file)===false){
                        $this->errorNum ++ ;
                        $this->errorFile[] = $file;
                    }
                }
            }
        }
        //执行完毕
        return true;
    }
}
赞赏
没有标签
首页      程序开发      PHP      ThinkPHP 后台用清除缓存程序代码
https://secure.gravatar.com/avatar/3b712b34a0e1b689cfb524c9c6bcdc47?s=256&r=g

团哥

文章作者

继续玩我的CODE,让别人说去。 低调,就是这么自信。

发表评论

textsms
account_circle
email

konakona

ThinkPHP 后台用清除缓存程序代码
介于部门里许多网站程序经常改动,当开启ThinkPHP的缓存时,改了程序文件后很容易产生错误。 制作这个功能可以让产品人员们在后台有自主权可以清空缓存,不必每次都让程序上服务器去搞…
扫描二维码继续阅读
2011-12-06