2015-01-09 22 views
2

我使用查詢緩存與無限過期時間。例如,考慮一塊下面的代碼:Yii查詢緩存與無限過期時間

$channels = Channels::model()->cache(0)->findAll(array('order' => 'channel_name')); 

此語句應該在緩存條目,使它是幹什麼的,但它不是取從緩存中的數據,而是直接將分貝結果。

雖然,如果我提供的過期時間> 0(零),那麼它工作順利。例如:

$channels = Channels::model()->cache(20)->findAll(array('order' => 'channel_name')); 

完美工作20秒並從緩存中獲取結果。

我們確認了它,因爲我們啓用了日誌並看到了分析。

無限到期時間使用Yii::app()->cache->set()Yii::app()->cache->get()

任何想法,如果即時通訊做錯了什麼工作也未嘗不可用於緩存鍵/值對?

謝謝。

回答

3

根據文檔0表示緩存被禁用。

只需將其設置爲一些較大的值。如果你需要在很多地方把它定義爲一個常數,以避免混亂magic number antipattern,即:

define('IMMUTABLE_CACHE', 60 * 60 * 24 * 365 * 100); 

$channels = Channels::model()->cache(IMMUTABLE_CACHE); 
+1

請幫我看看它說:「0」是禁用緩存。另外,啓用日誌清楚地表明緩存正在準備中。在我的情況下,我使用Sqlite和我可以清楚地看到'INSERT'命令'0'到期時間。 – Arfeen

+0

在[有效記錄類文檔](http://www.yiiframework.com/doc/api/1.1/CActiveRecord#cache-detail)。這與'cache'組件不同。 –

+0

謝謝彼得。我已經知道了。 – Arfeen