删除CodeIgniter查询缓存

时间:2011-11-15 13:41:16

标签: php mysql codeigniter query-cache

当我通过$this->db->cache_on();在CodeIgniter中进行查询缓存时,它将创建文件夹和文件,在controller+method中命名的文件夹,例如show+73。 但是当我从表中删除具有73个id的行并使用$this->db->cache_delete('show', $id);删除缓存时,它将无效。当我调用show/73时它存在并返回响应 我该如何解决?

我的代码:

返回结果(在模型中)

public function temp($id)
{
    $this->db->cache_on();
    $this->db->where('id',$id);
    $query = $this->db->get('system_store_table');
    return $query->result();
}

从表中删除行和缓存。 (它会成功删除表中的行,但不能删除它的缓存)

public function delete($id = 0)
{
    $this->db->flush_cache();
    $this->db->where('id',$id);
    $this->db->delete('system_store_table');
    $this->db->cache_delete('show', $id);
    if ($this->db->affected_rows() != 0)
        return TRUE;
    return FALSE;
}

2 个答案:

答案 0 :(得分:1)

明显,但值得排除 - 你检查过文件权限吗?此外,它基于控制器/方法进行缓存,因此我假设您正在进行一些重新路由,因为这不是有效的PHP代码:

class Show extends CI_Controller {
    public function 73() {
    }
}

您是否尝试过原始版本和重新播放的第1版和第1版第二个URI段?

除了手动检查file_exists(FCPATH。' / path / to / cache / show / 73')和取消链接()之外,我已经得到了所有这些。 ...

答案 1 :(得分:1)

通过

删除现金文件
$this->db->cache_delete('show', '73');

对于db

中的每次编辑或删除