zhaobin693 发表于 2013-11-4 13:15:13

删除已过期的页面缓存文件

CI自带的页面缓存,每访问一个URL,都会自动生成一个页面缓存文件,但生成的文件会永远存在,不会自动删除,时间长了,缓存文件会越来越多,严重的占用了空间资源和消耗服务器性能,更为别人提供了共计入口,在这里给出一个删除已过期的缓存文件,可以配合服务器计划任务每隔多长时间访问一次,即可自动删除已过期的缓存文件

    /**
   * 删除已过期缓存文件
   *
   */
    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);
      }
    }


33honest 发表于 2014-11-4 10:23:25

该文件很给力。
{:1_1:}
页: [1]
查看完整版本: 删除已过期的页面缓存文件