Странности с memcached

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Аватара пользователя
vitalik1183
Сообщения: 1675
Зарегистрирован: 2014.07.01, 08:42

Re: Странности с memcached

Сообщение vitalik1183 »

Ткните конкретно носом как закешировать данные чтобы ими можно было свободно впоследствии манипулировать через ActiveDataProvider? Закешировать именно объект, а не фрагмент страницы!
Yii2!
Demon_id
Сообщения: 421
Зарегистрирован: 2011.10.29, 00:13

Re: Странности с memcached

Сообщение Demon_id »

не читал внимательно тему выше, но попробую подсказать. вдруг поможет.
в 1.1 датапровайдер кешировали так:

Код: Выделить всё

return new CActiveDataProvider($this->cache(), array(
    'criteria'=>$criteria,
));     
возможно и к 2.0 применимо что то похожее.
Аватара пользователя
vitalik1183
Сообщения: 1675
Зарегистрирован: 2014.07.01, 08:42

Re: Странности с memcached

Сообщение vitalik1183 »

Не, пишет метод не найден.
Yii2!
Demon_id
Сообщения: 421
Зарегистрирован: 2011.10.29, 00:13

Re: Странности с memcached

Сообщение Demon_id »

может как то так?

Код: Выделить всё

$duration = 60;     // cache query results for 60 seconds.
$dependency = ...;  // optional dependency

$result = $db->cache(function ($db) {

    return new ActiveDataProvider([
        'query' => StatsSearch::find()
            ->with(['ipCommentContent'])
            ->excluded()
            ->select('COUNT(`uid`) AS count, `uid`')
            ->groupBy('uid')
            ->orderBy(['count' => SORT_DESC])
            ->limit(\Yii::$app->config->get('GENERAL.ACTIVE_PER_PAGE')),
        'pagination' => false,
    ]);

}, $duration, $dependency); 
Аватара пользователя
vitalik1183
Сообщения: 1675
Зарегистрирован: 2014.07.01, 08:42

Re: Странности с memcached

Сообщение vitalik1183 »

Попробовал так:

Код: Выделить всё

$urlDataProvider = StatsSearch::getDb()->cache(function ($db) {
            return new ActiveDataProvider([
                'query' => StatsSearch::find()
                    ->excluded()
                    ->select('COUNT(`url`) AS count, `url`')
                    ->groupBy(['url'])
                    ->orderBy(['count' => SORT_DESC])
                    ->limit(\Yii::$app->config->get('GENERAL.ACTIVE_PER_PAGE')),
                'pagination' => false,
            ]);
        });
 
Все так же как и при предыдущем варианте :(
Yii2!
astronin
Сообщения: 606
Зарегистрирован: 2012.01.30, 17:46

Re: Странности с memcached

Сообщение astronin »

vitalik1183 писал(а):Ткните конкретно носом как закешировать данные чтобы ими можно было свободно впоследствии манипулировать через ActiveDataProvider? Закешировать именно объект, а не фрагмент страницы!
Вам нужно закешировать только объект ActiveDataProvider без каких либо данных из базы?
Аватара пользователя
vitalik1183
Сообщения: 1675
Зарегистрирован: 2014.07.01, 08:42

Re: Странности с memcached

Сообщение vitalik1183 »

Просто дело в том, что выборка очень тяжелая. Мне и пагинатор по сути не нужен. На одной странице несколько ListView. Просто дело в том, что я вывожу все через ListView а он принимает только DataProvider на входе. Мне нужно чтобы выборки из базы кешировались, ибо если каждый менеджер начнет заходить на эту страницу, а в бд предполагается до 5млн записей - база просто напросто умрет.
Yii2!
astronin
Сообщения: 606
Зарегистрирован: 2012.01.30, 17:46

Re: Странности с memcached

Сообщение astronin »

ну правильно, тогда вам достаточно в конфиге прописать(как в линке, что я выше привел)
enableQueryCache => true,
queryCacheDuration => 3600
и все, ваши данные из базы будут кешироваться автоматически, и не важно, что это будет DataProvider или единичные запросы из базы, и спокойно пользуйтесь ими как хотите
Demon_id
Сообщения: 421
Зарегистрирован: 2011.10.29, 00:13

Re: Странности с memcached

Сообщение Demon_id »

astronin писал(а):ну правильно, тогда вам достаточно в конфиге прописать(как в линке, что я выше привел)
enableQueryCache => true,
queryCacheDuration => 3600
и все, ваши данные из базы будут кешироваться автоматически, и не важно, что это будет DataProvider или единичные запросы из базы, и спокойно пользуйтесь ими как хотите
это общий случай. а хотелось бы наверное делать это с какими то конкретным зависимостями по месту.
Аватара пользователя
vitalik1183
Сообщения: 1675
Зарегистрирован: 2014.07.01, 08:42

Re: Странности с memcached

Сообщение vitalik1183 »

astronin вроде ага, работает.
Но, конечно, как сказал Demon_id хотелось бы регулировать такое ручками, а то порой не все в кеш пихать нужно!

А как тогда очищать кеш? Вот например принудительно хочу щас почистить? Раньше flush срабатывал а сча ессно это не воркает.
Yii2!
Аватара пользователя
vitalik1183
Сообщения: 1675
Зарегистрирован: 2014.07.01, 08:42

Re: Странности с memcached

Сообщение vitalik1183 »

Неа, прописал строчки - опять 2-3 минуты и кеш тютю. Что и с бывшим вариантом!!!!!!! Еперный театр...
Yii2!
astronin
Сообщения: 606
Зарегистрирован: 2012.01.30, 17:46

Re: Странности с memcached

Сообщение astronin »

а покажите ошибку из сообщения, поидее это должно работать без проблем
http://www.yiiframework.ru/forum/viewto ... 20#p134459
и у вас MySQL стоит?
Аватара пользователя
vitalik1183
Сообщения: 1675
Зарегистрирован: 2014.07.01, 08:42

Re: Странности с memcached

Сообщение vitalik1183 »

Ошибок нет, просто данные то кешируются, то кеш самопроизвольно пропадает. Причем никто не сбрасывает его.
Да, mysql
Yii2!
Аватара пользователя
vitalik1183
Сообщения: 1675
Зарегистрирован: 2014.07.01, 08:42

Re: Странности с memcached

Сообщение vitalik1183 »

Остановил memcached
Поставил enableQueryCache = false
Смотрю запросы - при первом заходе по полной программе. При втором 3 запроса. Дык это как понять, memcached сам включился или данные в мемкеш чистый упали?
Yii2!
astronin
Сообщения: 606
Зарегистрирован: 2012.01.30, 17:46

Re: Странности с memcached

Сообщение astronin »

а в конфиге какой класс прописан для кеширования?
Аватара пользователя
vitalik1183
Сообщения: 1675
Зарегистрирован: 2014.07.01, 08:42

Re: Странности с memcached

Сообщение vitalik1183 »

Код: Выделить всё

'cache' => [
            'class' => 'yii\caching\MemCache',
            'useMemcached' => true
        ], 
Yii2!
astronin
Сообщения: 606
Зарегистрирован: 2012.01.30, 17:46

Re: Странности с memcached

Сообщение astronin »

а настройки выставленны корректные?
'servers' => [
[
'host' => 'server1',
'port' => 11211,
'weight' => 60,
],
Аватара пользователя
vitalik1183
Сообщения: 1675
Зарегистрирован: 2014.07.01, 08:42

Re: Странности с memcached

Сообщение vitalik1183 »

Код: Выделить всё

'cache' => [
            'class' => 'yii\caching\MemCache',
            'useMemcached' => true,
            'servers' =>
                [
                    'host' => 'localhost',
                    'port' => 11211,
                    'weight' => 100,
                ],
        ], 
теперь так - результат неизменен!
Yii2!
astronin
Сообщения: 606
Зарегистрирован: 2012.01.30, 17:46

Re: Странности с memcached

Сообщение astronin »

ну запросы не могут просто так исчезать, может перезатирается конфиг? а aps какого-то не установлено случайно? пересмотрите настройки, что-то не так выставлено
Последний раз редактировалось astronin 2015.03.03, 09:21, всего редактировалось 1 раз.
Аватара пользователя
vitalik1183
Сообщения: 1675
Зарегистрирован: 2014.07.01, 08:42

Re: Странности с memcached

Сообщение vitalik1183 »

Счас поставлю все на чистый виртуал. Глянем как там, может на дедике чего конфликтует.
Yii2!
Ответить