我想知道在codeigniter中是否有任何解决方法可以删除database cache
,比如每5小时一次。默认情况下database query cache
是持久的,我们必须手动删除它。
我们可以db cache
像page level cache
在 CI 中一样进行工作,在那里我们可以指定缓存时间!
我想知道在codeigniter中是否有任何解决方法可以删除database cache
,比如每5小时一次。默认情况下database query cache
是持久的,我们必须手动删除它。
我们可以db cache
像page level cache
在 CI 中一样进行工作,在那里我们可以指定缓存时间!
您可以制作一个 cron 脚本来调用 $this->db->cache_delete_all(); 每 5 小时运行一次。
我不太喜欢 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;
}
}
}
然后,从模型中使用它:
$this->load->helper('cache_expire');
if (!is_cache_valid('servers',60 /* seconds */)){
$this->db->cache_delete('controller', 'comments');
}
.....