Size: a a a

2021 October 01

D

Dmitry in symfony
Ну. Тогда банально сделайте враппер на встроенный фильтр. Ну или покопайте тот самый встроенный фильтр в потрохах
источник

D

Dmitry in symfony
Гляньте какие параметры у него есть. Как получается кверибилдер и как к нему добраться
источник
2021 October 04

AM

Alex Mikhaylov in symfony
В проекте используется симфониевский  адаптер Redis
и возникла такая проблема. Если контейнер с редисом не запущен возникает проблема. Например такой код  
$this->cache->getItem($normalizedToken);
не вывалит ексепшн, а просто скажет "сорян, такой эелемент не найден"
и приложение продолжит выполнятся. А мне нужно чтоб было выброшено исключение

как лучше сконфигурировать чтоб когда происходило обращение получать ексепшн?
источник

AP

Alex Plishkin in symfony
Сделай декоратор на адаптер который исключения будет выкидывать при getItem
источник

👤U

👤 User in symfony
Сдекорируйте.
источник

AM

Alex Mikhaylov in symfony
Да, спасибо. Так и думал сделать декоратор
А в самом декораторе как проверить что redis запущен
источник

SP

Sergey Protko in symfony
Это адаптер называется, не надо ломать контракты. Свой интерфейс свои правила

Вообще звучит так что ты чёт не то делаешь. Ты либо юзаешь кэш не как кэш либо хз зачем тебе исклюяение
источник

AM

Alex Mikhaylov in symfony
Спасибо, справедливое замечание
Похоже я что то не то делаю :)

подробнее опишу ситуацию
источник

AM

Alex Mikhaylov in symfony
$item = $this->cache->getItem($normalizedToken);

       if ($item->isHit()) {
           return $this->serializer->decode($item->get());
       } else {
           throw new HttpException(Response::HTTP_UNAUTHORIZED);
       }

$item->isHit() - будет false в двух случаях, если нет такого ключа в кеше или не работает редис(тогда ключа тоже быть не может впринципе)

мне нужно как то просигнализировать типа: Ребята вы забыли запустить редис!!!
источник

D

Dmitry in symfony
это сигнализировать должен мониторинг а не код
источник

D

Dmitry in symfony
коду пофиг запущен кеш или пустой в принципе, это абсолютно не важно
источник

D

Dmitry in symfony
если вы хотите из кода проверять запущен ли редис, ну попробуйте у клиента поискать некие client->status или типа того может client->ping
и само собой делать это не на каждый запрос
источник

AD

Andrey Dembitskyi in symfony
Не похоже на использование в качестве кеша.
источник

AM

Alex Mikhaylov in symfony
Правильно. Ситуация такая. Отдаем клиенту на тестирование. Они присылают баги. Типа не работает, разбираемся, оказывается там не работает редис.
источник

D

Dmitry in symfony
значит у вас в коде проблема, если вы зависите от того запущен редис или нет
от кеша зависеть нельзя - ну нет и нет его, работаем с базой
источник

D

Dmitry in symfony
если конечно у вас редис не используется в качестве основного хранилища на проекте
источник

AM

Alex Mikhaylov in symfony
Используется
источник

D

Dmitry in symfony
а, так это совсем другой разговор
источник

D

Dmitry in symfony
тогда мне кажется тут лучше будет мидлвар или его аналог
источник

AD

Andrey Dembitskyi in symfony
не берите symfony/cache тогда
источник