phpmysqlcodeignitercaching

Query caching in CodeIgniter


I want to cache a query in CodeIgniter. What I did for my test is make a controller, that I named 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));
}
}

And a model that I named 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();
}

When I call http://localhost/rejaal/show/1 for the first time, it will show a result, but when I call it for the second time, it does not show anything.

I should delete the query cache file to show it again? How should I solve this problem?

With special thanks for your attention.


Solution

  • Can you confirm that you have set $db['default']['cachedir'] to the path of a writable folder in application/config/database.php and that when the query is first run it creates a cache file in there?

    The only other reason I can think of for it failing is by your use of the _remap override. I have not used db caching using _remap, but know that CodeIgniter creates a folder called controller+action in your cache folder, and might not be handled very well if using remap? Someone correct me if I am wrong about this.