我想在CodeIgniter中缓存一个查询。我为测试所做的是制作一个控制器,我将其命名为show.php
:
class Show extends CI_Controller{
public function __construct()
{
parent::__construct();
$this->load->model('rejaal_show');
}
public function _remap($method = '',$param = array())
{
$method = intval($method);
$this->output->cache(5);
var_dump ($this->rejaal_show->temp($method));
}
}
还有一个我命名为rejaal_show.php
:的模型
public function temp($id)
{
$this->db->cache_on();
$this->db->where('id',$id);
$query = $this->db->get('system_store_table');
return $query->result();
}
当我第一次调用http://localhost/rejaal/show/1
时,它会显示一个结果,但当我第二次调用它时,它什么都不显示。
我应该删除查询缓存文件以再次显示它吗?我应该如何解决这个问题?
特别感谢您的关注。
您能否确认已将$db['default']['cachedir']
设置为application/config/database.php
中可写文件夹的路径,并且在首次运行查询时会在其中创建一个缓存文件?
我能想到它失败的唯一其他原因是您使用了_remap
覆盖。我没有使用过_remap
的数据库缓存,但我知道CodeIgniter在缓存文件夹中创建了一个名为controller+action的文件夹,如果使用remap,可能不会很好地处理它?如果我错了,有人纠正我。
在网页缓存的CodeIgniter用户指南页面中,它说:
由于CodeIgniter存储内容以供输出的方式,只有当您为带有视图的控制器生成显示时,缓存才会起作用
在视图内执行var_dump
。