2015-01-09 5 views
2

무한 만료 시간으로 쿼리 캐싱을 사용하고 있습니다.무한 만료 시간을 가진 Yii 쿼리 캐싱

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

이 명령문 캐시의 항목에서 확인하도록되어 그것을하고있다, 그러나 캐시에서 데이터를 가져 오는되지는 않고 직접적에 대한 DB를 것입니다 : 예를 들어 아래의 코드 조각을 고려 결과.

만료 시간이 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를 사용하는 Im과 'INSERT'명령을 '0'만료 시간으로 명확하게 볼 수 있습니다. – Arfeen

+0

[활성 레코드 클래스 문서] (http://www.yiiframework.com/doc/api/1.1/CActiveRecord#cache-detail). 이것은'cache' 구성 요소와 같지 않습니다. –

+0

감사합니다. 나는 그것을 가지고있다. – Arfeen