在codeigniter中的单个缓存文件夹中管理两个不同的缓存文件

时间:2017-07-25 08:49:25

标签: php mysql codeigniter caching

我需要帮助来找出codeigniter缓存的一个问题。

我正在运行两个函数来将结果存储在缓存中。这个功能在我的模型中:

public function cacheAllCurrencies()
    {
        $this->db->cache_on();
        $this->db->select("name,icon,currency_code");
        $this->db->from("currency");
        $this->db->where("status='Active'");
        $cache_currency_result = $this->db->get()->result();
        $this->db->cache_off();
        return $cache_currency_result;
    }

    public function cacheAllCategory()
    {
        $this->db->cache_on();
        $this->db->select("name,url");
        $this->db->from("category");
        $this->db->where("parent_category='0'");
        $this->db->where("status='Active'");
        $this->db->order_by('name','ASC');
        $cache_category_result = $this->db->get()->result();
        $this->db->cache_off();
        return $cache_category_result;
    }

My these two functions are called in header view like below :

$CI =& get_instance();
$CI->load->model(PUBLIC_DIR.'/commonPage','common');
$currencies = $CI->common->cacheAllCurrencies();
$categories = $CI->common->cacheAllCategory();

现在,当所有页面加载时,它会根据打开的页面创建一个缓存文件,如主页,博客,博客+ blogname等。

两个查询都在缓存文件夹中生成两个缓存文件

1580e4c2413cb09f6ed3bc7fae8cee45 - 第一个函数缓存结果 d7e2452b0424f859e1a5984bd26cbd6c - 第二个函数缓存结果

现在,我有两个问题:

  1. 当我更新该类别的货币表时,我需要删除1580e4c2413cb09f6ed3bc7fae8cee45缓存文件。
  2. 如何生成此文件名?我的意思是codeigniter如何生成缓存文件名。在我的缓存中1580e4c2413cb09f6ed3bc7fae8cee45代表货币,d7e2452b0424f859e1a5984bd26cbd6c代表类别。
  3. 我希望这个解释有意义,我希望大多数codeigniter开发人员都有这个问题需要解决。

    谢谢, 阿里

1 个答案:

答案 0 :(得分:1)

Codeigniter 中,您可以使用表名清除DB的缓存 像

$this->db->cache_delete('currency');
$this->db->cache_delete('category');

同时或两个表缓存

$this->db->cache_delete('currency','category');

编辑: CodeIgniter通过md5()SQL查询加密来保存文件名

public function cacheAllCurrencies(){
    $this->db->cache_on();
    $this->db->select("name,icon,currency_code");
    $this->db->from("currency");
    $this->db->where("status='Active'");
    //here you get filename
    $file_name=md5($this->db->get_compiled_select());
    $cache_currency_result = $this->db->get()->result();
    $this->db->cache_off();
    return $cache_currency_result;
}