2013-02-19 2 views
1

Моя версия YII: 1.1.12 ... царапины, я обновился до версии 1.1.13 и до сих пор не работает.Yii кеширование времени не работает?

Я попытался это:

Yii::app()->cache->set('someKey', $auctions); 
$data = Yii::app()->cache->get('someKey'); 
print_r($data); 

И я вижу данные, которые я хранимые! Однако, если я попробую это:

Yii::app()->cache->set('someKey', $auctions, 10); 
$data = Yii::app()->cache->get('someKey'); 
print_r($data); 

Я ничего не вижу? Почему YII игнорирует мой временной интервал? Что мне не хватает?

** EDIT **

Мой кеширования определяется в конфигурации, как:

'cache'=>array(
    'class'=>'system.caching.CMemCache', 
    'useMemcached'=>false, 
    'servers'=>array(
     array('host'=>'127.0.0.1', 'port'=> 11211, 'weight'=>60), 
     //array('host'=>'server2', 'port'=>11211, 'weight'=>40), 
    ), 
), 

Я знаю, что Memcache работает, потому что я тестировал с этим примером вне рамок YII:

$memcache = new Memcache; 
$memcache->connect("localhost",11211); 
$tmp_object = new stdClass; 
$tmp_object->str_attr = "test"; 
$memcache->set("mysupertest",$tmp_object,false,5); 
var_dump($memcache->get("mysupertest")); 

Это работает и элемент кэшируется в течение 5 секунд ...

+0

В файле конф какой тип кэширования сделал и определить? – darkheir

+0

Я обновил свой вопрос с дополнительной информацией. – coderama

+0

Попытайтесь увидеть, есть ли 'Yii :: app() -> cache-> set ('someKey', $ auction, 10);' return 'true' или нет – darkheir

ответ

3

Кажется, что это ошибка в CMemCache.php. Существует эта функция:

protected function setValue($key,$value,$expire) 
{ 
    if($expire>0) 
    $expire+=time(); 
    else 
    $expire=0; 

    return $this->useMemcached ? $this->_cache->set($key,$value,$expire) : $this->_cache->set($key,$value,0,$expire); 
} 

MemCache не хочет время быть добавлены, так что мое быстрое исправление:

protected function setValue($key,$value,$expire) 
{ 
    return $this->useMemcached ? $this->_cache->set($key,$value,$expire) : $this->_cache->set($key,$value,0,$expire); 
} 
+1

Сообщить об этом на странице Yii github. – ddinchev

1

Ну, убедитесь, что $auctions четко определены.

Yii::app()->cache->set('someKey', array('someValue'), 120); // 120 means 2 minutes 
print_r(Yii::app()->cache->get('someKey')); // you should see the array with the single value, I do see it when I try to run it 

Убедитесь, что конфигурация в порядке, и вы не используете CDummyCache. Шахта выглядит так:

'components' => array(
     ... 
     // Add a cache component to store data 
     // For demo, we are using the CFileCache, you can use any 
     // type your server is configured for. This is the simplest as it 
     // requires no configuration or setup on the server. 
     'cache' => array (
      'class' => 'system.caching.CFileCache', 
     ), 
     ... 
    ), 
+0

Я обновил свой вопрос, и даже если аукционы установлены на «ТЕСТ», он все равно не работает в тот момент, когда я добавляю время. На что еще я мог смотреть? – coderama

+0

Хорошо, вы могли бы открыть 'CMemCache' и посмотреть, что там происходит. – ddinchev

+0

Что вы подразумеваете под открытым кодом CMemCache? – coderama

Смежные вопросы