Кэширование, не срабатывает DbDependency

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

Кэширование, не срабатывает DbDependency

Сообщение drag0n »

Добрый день.

Может кто объяснить, в чем проблема, не срабатывает DbDependency?

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

        $db = User::getDb();
        $dep = new dbDependency();
        $dep->sql = "SELECT MAX(updated_at) FROM user";
        $result = $db->cache(function ($db) {
            return User::find()->all($db);
        }, 600, $dep)
Нужно чтобы срабатывало при изменении updated_at каждый раз по всей таблицы, но этого не происходит
drag0n
Сообщения: 208
Зарегистрирован: 2017.04.28, 08:37

Re: Кэширование, не срабатывает DbDependency

Сообщение drag0n »

Получается что у всех все работает? )
andku83
Сообщения: 988
Зарегистрирован: 2016.07.01, 10:24
Откуда: Харьков

Re: Кэширование, не срабатывает DbDependency

Сообщение andku83 »

Loveorigami
Сообщения: 977
Зарегистрирован: 2014.08.27, 21:54

Re: Кэширование, не срабатывает DbDependency

Сообщение Loveorigami »

andku83 писал(а): 2018.09.12, 15:45 https://www.yiiframework.com/doc/api/2. ... e()-detail
enableQueryCache
Это из другой оперы
Аватара пользователя
carono
Сообщения: 52
Зарегистрирован: 2018.04.28, 11:05

Re: Кэширование, не срабатывает DbDependency

Сообщение carono »

хм, странно, не могу понять, или действительно косяк или в упор ошибки в коде не вижу
Аватара пользователя
carono
Сообщения: 52
Зарегистрирован: 2018.04.28, 11:05

Re: Кэширование, не срабатывает DbDependency

Сообщение carono »

Твой пример у меня тоже не завелся, почему, хрен его знает (должен ли вообще?), попробуй так

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

        $dep = new dbDependency();
        $dep->sql = "SELECT MAX(updated_at) FROM user";     
        $result = \Yii::$app->cache->getOrSet('users', function () {
            return User::find()->all();
        }, 600, $dep);
drag0n
Сообщения: 208
Зарегистрирован: 2017.04.28, 08:37

Re: Кэширование, не срабатывает DbDependency

Сообщение drag0n »

carono писал(а): 2018.09.12, 17:54 Твой пример у меня тоже не завелся, почему, хрен его знает (должен ли вообще?), попробуй так

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

        $dep = new dbDependency();
        $dep->sql = "SELECT MAX(updated_at) FROM user";     
        $result = \Yii::$app->cache->getOrSet('users', function () {
            return User::find()->all();
        }, 600, $dep);
Спасибо за пример, пробовал тоже не работает (((
andku83
Сообщения: 988
Зарегистрирован: 2016.07.01, 10:24
Откуда: Харьков

Re: Кэширование, не срабатывает DbDependency

Сообщение andku83 »

В вопросе речь шла о $db->cache().
Loveorigami писал(а): 2018.09.12, 15:45 $db->cache->getOrSet();
Тут речь о чем-то вообще несуществующем.

В результате пришли к Yii::$app->cache->getOrSet()

Может начать сначала:
1. Какую проблему пытаемся решить?
2. Что ожидаем от функции?
3. Что (работает)/(не работает) не так?
drag0n
Сообщения: 208
Зарегистрирован: 2017.04.28, 08:37

Re: Кэширование, не срабатывает DbDependency

Сообщение drag0n »

Нужно чтобы срабатывал DbDependency при изменении поля updated_at, но этого не происходит.
Эта проблема, я не могу понять почему не срабатывает?
andku83
Сообщения: 988
Зарегистрирован: 2016.07.01, 10:24
Откуда: Харьков

Re: Кэширование, не срабатывает DbDependency

Сообщение andku83 »

andku83 писал(а): 2018.09.12, 18:26 2. Что ожидаем от функции?
3. Что (работает)/(не работает) не так?
Как оно должно "срабатывал" по вашему мнению?
drag0n
Сообщения: 208
Зарегистрирован: 2017.04.28, 08:37

Re: Кэширование, не срабатывает DbDependency

Сообщение drag0n »

при изменении поля updated_at, $dep->sql = "SELECT MAX(updated_at) FROM user";
andku83
Сообщения: 988
Зарегистрирован: 2016.07.01, 10:24
Откуда: Харьков

Re: Кэширование, не срабатывает DbDependency

Сообщение andku83 »

Ну так чего именно вы ожидаете от кода в первом посте?
Какую бизнес задачу необходимо решить?
drag0n
Сообщения: 208
Зарегистрирован: 2017.04.28, 08:37

Re: Кэширование, не срабатывает DbDependency

Сообщение drag0n »

при изменении поля updated_at, сбрасывался кэш, т.е. происходили изменения в таблице.
ни то ни другое не происходит.
Loveorigami
Сообщения: 977
Зарегистрирован: 2014.08.27, 21:54

Re: Кэширование, не срабатывает DbDependency

Сообщение Loveorigami »

и тут почитайте https://klisl.com/cache_yii.html
и выберите, какой кеш вам нужен. Кеш запросов (в бд), или фрагментов (компонент cache). Как определяете, что не срабатывает кеш?
urichalex
Сообщения: 994
Зарегистрирован: 2015.08.07, 11:03

Re: Кэширование, не срабатывает DbDependency

Сообщение urichalex »

А вы уверены, что updated_at обновляется?
andku83
Сообщения: 988
Зарегистрирован: 2016.07.01, 10:24
Откуда: Харьков

Re: Кэширование, не срабатывает DbDependency

Сообщение andku83 »

drag0n писал(а): 2018.09.12, 20:33 ... т.е. происходили изменения в таблице.
Кеш никак не производит изменений в таблице (ну разве что если вы кешируете в БД, а не в файлы (по-умолчанию))
drag0n писал(а): 2018.09.12, 20:33 при изменении поля updated_at, сбрасывался кэш...
Dependency не вызывает удаления кеша, а всего лишь говорит о том можно ли его использовать как валидный или же нужно получать данные заново.
drag0n
Сообщения: 208
Зарегистрирован: 2017.04.28, 08:37

Re: Кэширование, не срабатывает DbDependency

Сообщение drag0n »

Loveorigami писал(а): 2018.09.12, 21:46 посмотрите
https://www.youtube.com/watch?v=aQ0kMDE4k4U

с 1ч 58мин
Я смотрел это видео, делал как у него, не работает.
drag0n
Сообщения: 208
Зарегистрирован: 2017.04.28, 08:37

Re: Кэширование, не срабатывает DbDependency

Сообщение drag0n »

Loveorigami писал(а): 2018.09.12, 21:54 и тут почитайте https://klisl.com/cache_yii.html
и выберите, какой кеш вам нужен. Кеш запросов (в бд), или фрагментов (компонент cache). Как определяете, что не срабатывает кеш?
Кэш у меня работает, мне нужно чтобы при изменении updated_at, пользователь увидел обновленную информацию на экране.
Этого не происходит.
Ответить