用户
 找回密码
 入住 CI 中国社区
搜索
查看: 3215|回复: 1
收起左侧

[辅助方法 Helper] 删除已过期的页面缓存文件

[复制链接]
发表于 2013-11-4 13:15:13 | 显示全部楼层 |阅读模式
CI自带的页面缓存,每访问一个URL,都会自动生成一个页面缓存文件,但生成的文件会永远存在,不会自动删除,时间长了,缓存文件会越来越多,严重的占用了空间资源和消耗服务器性能,更为别人提供了共计入口,在这里给出一个删除已过期的缓存文件,可以配合服务器计划任务每隔多长时间访问一次,即可自动删除已过期的缓存文件
PHP复制代码
 
    /**
     * 删除已过期缓存文件
     *
     */

    public function delCacheFile()
    {
        //打开缓存目录句柄
        $handle = opendir('application/cache');
        if($handle)
        {
            //遍历目录里的文件,逐个判断其有效日期,若当前时间已超出其有效日期,则删除该文件
            while(false !== ($file = readdir($handle)))
            {
                //CI框架的页面文件缓存为MD5加密的32个字符组成的文件名
                //在这里我们建的判断下文件名长度是否为32,后面还会具体判
                //断该文件是否为CI框架的页面文件缓存
                if(strlen($file) == 32)
                {
                    //CI框架的页面缓存文件由类似这样的代码开头:1383531993TS--->
                    //读取文件前10个字符,该字符串为一时间戳,如:1383530515
                    $filename = "application/cache/{$file}";
                    $fHandle = fopen($filename, "r");
                    $contents = fread($fHandle, 10);
                    fclose($fHandle);
                    //判断该时间戳是否为数字字符串,并判断是否还在有效期内
                    //若但前时间已超出其有效期,则删除该文件
                    if(is_numeric($contents) && (time() > $contents))
                    {
                        @unlink($filename);
                    }
                }
            }
            //关闭目录
            closedir($handle);
        }
    }
 
复制代码


评分

参与人数 1威望 +5 收起 理由
Hex + 5 很给力!

查看全部评分

发表于 2014-11-4 10:23:25 | 显示全部楼层
该文件很给力。

本版积分规则