2013-05-28 2 views
0

Я использую PHP Yii Framework и MemCache для кэширования и, когда я открываю не кэшируюсь страницы в первый раз, когда я вижу эту ошибку:Yii ошибки кэша: Попытка получить свойство необъектного

Живой ошибка Ошибки выход из системы (Linux):

Fatal error: Call to a member function getColumnNames() on a non-object in /home/cineshell/cineklik/framework/db/ar/CActiveFinder.php on line 385 

Локально журнал ошибок (окна):

Trying to get property of non-object 
C:\xampp\htdocs\appfolder\framework\yiilite.php(7125) 
... 
7123  public function getTableSchema() 
7124  { 
7125   return $this->getMetaData()->tableSchema; 
7126  } 

конфигурации/главная:

'cache'=> array(
     'class'=> 'CMemCache', 
      'servers'=>array(
      array('host'=>'localhost', 'port'=>11211, 'weight'=>100), 
     ), 
    ), 

пример кэша:

$data = Yii::app()->cache->get('casheID' ); 
if($data===false) 
{ 
    $data = dataprovider, query... etc 
} 
echo $data; 

Итак, что здесь ошибка, и может быть что-то в настройках сервера?

кто-то сказал мне использовать if isset, но я не понимаю!

+0

Что вы кешируете? –

+0

@Aktiiv dataprovider, query .. – Abudayah

ответ

1

Для CActiveDataProvider, пожалуйста, следуйте этому руководству. http://www.yiiframework.com/wiki/233/using-cache-in-cactivedataprovider/

Для альтернативы вы можете использовать кеш фрагмента в виде сетки или частичного представления в зависимости от потребностей. Я также боролся с этим, и я обнаружил, что кеш запросов является единственным рабочим решением.

+0

спасибо, но я могу использовать секунды для зависимости кеша, потому что у меня нет update_time? – Abudayah

+0

Да. $ posts = Post :: model() -> cache (1000, $ dependency) -> findAll(); Здесь 1000 секунд, когда кеш недействителен. Взгляните на отличную документацию: http://www.yiiframework.com/doc/guide/1.1/en/caching.data#using-query-caching-with-activerecord –

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