【问题标题】:Query caching in CodeIgniterCodeIgniter 中的查询缓存
【发布时间】:2011-12-29 12:09:03
【问题描述】:

我想在 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时,它会显示一个结果,但是当我第二次调用它时,它不会显示任何内容。

我应该删除查询缓存文件以再次显示它吗?我该如何解决这个问题?

特别感谢您的关注。

【问题讨论】:

  • 欢迎来到 StackOverflow。不要忘记阅读FAQ

标签: php mysql codeigniter caching


【解决方案1】:

Web Page Caching 的 CodeIgniter 用户指南页面中,它说:

由于 CodeIgniter 存储输出内容的方式,缓存仅在您使用 view 为控制器生成显示时才有效。

在视图中输入var_dump

【讨论】:

  • 要启用缓存,请将以下标签放入任何控制器函数中:$this->output->cache(n);
【解决方案2】:

您能否确认您已将$db['default']['cachedir'] 设置为application/config/database.php 中可写文件夹的路径,并且当第一次运行查询时,它会在其中创建一个缓存文件?

我能想到它失败的唯一其他原因是您使用了_remap 覆盖。我没有使用_remap 使用db 缓存,但知道CodeIgniter 在您的缓存文件夹中创建了一个名为controller+action 的文件夹,如果使用remap 可能无法很好地处理?如果我对此有误,请有人纠正我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-17
    • 1970-01-01
    • 2012-07-09
    • 2016-12-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-18
    • 1970-01-01
    相关资源
    最近更新 更多