Удаление закешированого запроса

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Goog1e
Сообщения: 97
Зарегистрирован: 2016.01.18, 20:02

Удаление закешированого запроса

Сообщение Goog1e »

Всем привет!!!
Не могу создать свой ключ для закешированого запроса
Сам код

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

        $items = \app\models\Options::getDb()->cache(function () {
            return \app\models\Options::find()->asArray()->all();
        }, $this->cacheDuration,$this->cacheDependency);
 

И чтоб сбросить этот кеш, приходится писать такой ключ(лишние данные убрал)

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

      
      Yii::$app->cache->flush([
              0 => 'yii\db\Command',
              1 => 'fetchAll',
              2 => null,
              3 => 'mysql:host=localhost;dbname=...',
              4 => 'root',
              5 => "SELECT * .....",
        ]);
         
Возможно ли создать свой ключ, при кешировании запроса.

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Удаление закешированого запроса

Сообщение zelenin »

https://github.com/yiisoft/yii2/blob/ma ... d.php#L878 вы же ведь наверняка видели этот код, раз знаете из каких частей составляется ключ.

Goog1e
Сообщения: 97
Зарегистрирован: 2016.01.18, 20:02

Re: Удаление закешированого запроса

Сообщение Goog1e »

Код видел, поэтому есть решение, хотя не самое лучшее.

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Удаление закешированого запроса

Сообщение zelenin »

Goog1e писал(а):Код видел, поэтому есть решение, хотя не самое лучшее.
раз видели код, то видели и то, что ключ кэша туда никак не передать.

Goog1e
Сообщения: 97
Зарегистрирован: 2016.01.18, 20:02

Re: Удаление закешированого запроса

Сообщение Goog1e »

Жаль нельзя 4 параметром отправить $Key

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Удаление закешированого запроса

Сообщение zelenin »

Goog1e писал(а):Жаль нельзя 4 параметром отправить $Key
да, это было бы удобно. вероятно есть подводный камень, который с первого взгляда не виден.
впрочем это же обертка. вы же можете без этого сахара реализовтаь сами.

$result = $cache->get($key);
if($result === null) {
итд
}

Goog1e
Сообщения: 97
Зарегистрирован: 2016.01.18, 20:02

Re: Удаление закешированого запроса

Сообщение Goog1e »

Что-то получается)

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

if (( $items = \Yii::$app->cache->get($this->cache)) === false) {
            $items = \app\models\Options::find()->asArray()->all();
            \Yii::$app->cache->set($this->cache, $items, $this->cacheDuration, $this->cacheDependency);
        }
  

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

      Yii::$app->cache->flush([Yii::$app->config->cache]); 

Ответить