一段时间后,codeigniter删除数据库缓存

时间:2013-05-02 10:20:17

标签: codeigniter caching

我想知道是否有任何解决方法可以删除codeigniter中的database cache,比如每5小时后删除一次。默认情况下database query cache是持久的,我们必须手动删除它。

我们可以让db cache像CI中的page level cache那样工作,我们可以在其中指定缓存时间!

2 个答案:

答案 0 :(得分:2)

你可以制作一个cron脚本来调用$ this-> db-> cache_delete_all();每隔5小时运行一次。

答案 1 :(得分:1)

我真的不喜欢cron作业解决方案,因为在安装新服务器或维护后可能会忘记执行它。

我决定使用一个小助手来支持删除或旧的缓存文件:

<强> /application/helpers/cache_expire_helper.php:

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

define("CACHE_DIR", APPPATH.'cache/');

if ( ! function_exists('is_cache_valid')) {
    function is_cache_valid($cache_name,$lifespan) {

        if (file_exists(CACHE_DIR.$cache_name)) {
            $last_date = file_get_contents(CACHE_DIR.$cache_name);
            if (abs($last_date - time()) < $lifespan) {
                return true;
            } else {
                file_put_contents(CACHE_DIR.$cache_name,time());
                return false;
            }
        } else {
            file_put_contents(CACHE_DIR.$cache_name,time());
            return true;
        }

    }
}

然后,使用它,来自Model:

$this->load->helper('cache_expire');        
if (!is_cache_valid('servers',60 /* seconds */)){
    $this->db->cache_delete('controller', 'comments');
}
.....