大米CMS官网论坛,大米站长联盟,大米站长之家,大米开发者社区

 找回密码
 注册大米会员

QQ登录

只需一步,快速开始

查看: 12190|回复: 2
打印 上一主题 下一主题

关于系统缓存清理问题点击"清理"按钮后,缓存依然存在!

[复制链接]

3

主题

4

帖子

24

积分

新手上路

Rank: 1

积分
24
跳转到指定楼层
楼主
发表于 2014-6-3 15:44:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在网上找到一篇不错的文章(实现方法),跟大家分享下。
在大米项目代码,也测试通过了。代码如下:
        //****清理系统缓存****
        public function clearcache()
        {
                header("Content-type: text/html; charset=utf-8");
                //缓存路径
                $dir_web=array('./Web/Runtime/');
               
                foreach($dir_web as $value) {
                       
                        rmdirr($value);
                }
               
                @mkdir('./Web/Runtime',0777,true);
               
                $dirs_admin=array('./Admin/Runtime/');
               
                foreach($dirs_admin as $value) {
                               
                        rmdirr($value);
               
                }
               
                @mkdir('./Admin/Runtime',0777,true);
               
                $msg = '系统缓存清理完毕!';
               
                $this->assign('waitSecond',10);
               
                $this->assign('jumpUrl',U('Index/main'));
               
                $this->success($msg);
        }
}

function rmdirr($dirname) {
        if (!file_exists($dirname)) {
                return false;
        }
        if (is_file($dirname) || is_link($dirname)) {
                return unlink($dirname);
        }
        $dir = dir($dirname);
        if($dir){
                while (false !== $entry = $dir->read()) {
                        if ($entry == '.' || $entry == '..') {
                                continue;
                        }
                        //递归
                        rmdirr($dirname . DIRECTORY_SEPARATOR . $entry);
                }
        }
        $dir->close();
        return rmdir($dirname);
}

借鉴于:http://blog.sina.com.cn/s/blog_827ddd9501019ggl.html

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享
回复

使用道具 举报

501

主题

778

帖子

7664

积分

超级版主

Rank: 8Rank: 8

积分
7664

授权用户

沙发
发表于 2014-6-3 16:17:53 | 只看该作者
clearstatcache() 直接加载is_dir前面就行了
回复 支持 反对

使用道具 举报

3

主题

4

帖子

24

积分

新手上路

Rank: 1

积分
24
板凳
 楼主| 发表于 2014-6-3 16:19:37 | 只看该作者
本帖最后由 iLoveProgram 于 2014-6-3 16:34 编辑

这是源码,后来追影也做了修改,也能实现了。如下:
clearstatcache() 直接加载is_dir前面就行了
//****清理系统缓存****
        public function clearcache()
        {
                //缓存路径
                $Webpath = './Web/Runtime/';
                $Adminpath = './Admin/Runtime/';

                clearstatcache();
                if(is_dir($Webpath))
                {
                        @deldir($Webpath);
                }

                 clearstatcache();
                if(is_dir($Adminpath))
                {
                        @deldir($Adminpath);
                }
                $msg = '系统缓存清理完毕!';
                $this->assign('waitSecond',10);
                $this->assign('jumpUrl',U('Index/main'));
                $this->success($msg);
        }
}


//删除目录函数
                function deldir($dirname)
                {
                        if(file_exists($dirname))
                        {
                                $dir = opendir($dirname);
                                while($filename = readdir($dir))
                                {
                                        if($filename != "." && $filename != "..")
                                        {
                                                $file = $dirname."/".$filename;
                                                if(is_dir($file))
                                                {
                                                        deldir($file); //使用递归删除子目录
                                                }
                                                else
                                                {
                                                        @unlink($file);
                                                }
                                        }
                                }
                        
                                closedir($dir);
                                rmdir($dirname);
                        }
                }
        注:clearstatcache() 函数:清除文件状态缓存。

还有,thinkPHP也封装这方面的函数,也就是Dir.class.php的del函数或delDir函数。(两者有点区别)。

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册大米会员

本版积分规则

QQ|小黑屋|大米CMS社区 ( 蜀ICP备11002200号-2广告联系:广告联系 

Powered by 大米CMS

© 2010-2020 大米CMS Inc.

快速回复 返回顶部 返回列表