我已經使用Codeigniter數據庫緩存一段時間,它工作得很好,但現在我有一個奇怪的問題與特定的查詢。步驟如下:爲什麼codeigniter數據庫緩存重新生成文件?
- 我的緩存目錄爲空。
- 我打開URL/myproject的/ myController的/ myaction/
- 文件將在myController的-myaction目錄緩存(我打開該文件與我的記事本,以確保它包含正確的數據。
- 我再次打開/ myproject/mycontroller/myaction /期待從緩存中檢索數據,結果是從數據庫中檢索數據並重新生成文件y我不知道爲什麼,但重點是生成的文件是。沒用
如果是對你很重要,我給你下一個信息:
- 該查詢是一個存儲過程。
- 我有其他正在完美工作的查詢。
如果您需要特定數據,請讓我知道,我非常感謝您的幫助。
謝謝。
使用Xdebug的我發現,在查詢功能的DB_driver.php文件,存在這樣說,如下行277的條件:
// Is query caching enabled? If the query is a "read type"
// we will load the caching class and return the previously
// cached query if it exists
if ($this->cache_on == TRUE AND (stristr($sql, 'SELECT')))
{
if ($this->_cache_init())
{
$this->load_rdriver();
if (FALSE !== ($cache = $this->CACHE->read($sql)))
{
return $cache;
}
}
}
該查詢必須是一個SELECT,和我使用一個存儲過程,我的模型是:
public function cobertura($param1= NULL) {
$query = $this->db->query("[SP_NAME] ?", array($param1));
}
return $query->result();
}
所以當我使用一個存儲過程,而不是一個SELECT語句,條件返回FALSE並再次生成緩存文件。
如何修改該函數以檢測我的存儲過程爲有效的語句?
非常感謝。
嗨,你可以在你的控制器上發佈你的代碼? – PinoyPal 2014-09-26 05:05:55
@PinoyPal,我添加了有用的信息,謝謝你的時間。 – 2014-10-06 15:00:18