Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
一段时间后删除数据库缓存codeigniter_Codeigniter_Caching - Fatal编程技术网

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

一段时间后删除数据库缓存codeigniter,codeigniter,caching,Codeigniter,Caching,我想知道是否有什么办法可以在codeigniter中删除数据库缓存,比如每5小时删除一次。默认情况下,数据库查询缓存是持久的,我们必须手动删除它 我们可以让db缓存像CI中的页面级缓存那样工作,在那里我们可以指定缓存时间 您可以创建一个cron脚本来调用$this->db->cache_delete_all();并且每5小时运行一次。我不太喜欢cron作业解决方案,因为在安装新服务器或维护后可能会忘记执行它 我决定使用一个小助手来支持删除或旧缓存文件: /application/helpers/

我想知道是否有什么办法可以在codeigniter中删除
数据库缓存
,比如每5小时删除一次。默认情况下,数据库查询缓存是持久的,我们必须手动删除它


我们可以让
db缓存
像CI中的
页面级缓存
那样工作,在那里我们可以指定缓存时间

您可以创建一个cron脚本来调用$this->db->cache_delete_all();并且每5小时运行一次。

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

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

/application/helpers/cache\u expire\u 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;
        }

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

这似乎解决了我的问题。但在CI中没有任何东西可以让我不需要运行cron作业。