Size: a a a

2020 November 04

SB

Sergei Baikin in symfony
Александр Яковлев
ок, попробую другой вопрос. Если я вас правильно понял, обойтись можно без супервайзера, мол, докер эту работу делает не хуже:

могу ли я запускать консюмеры, еще и по нескольку процессов, еще и поднимать упавшие?
докер сам будет перезапускать если ему сказать
может запускать сколько угодно копий
просто скажите ему сколько надо
источник

AK

Andrew Kovalyov in symfony
Andrey Dembitskyi
в документации docker нет ответа на этот вопрос?
нет, но в симфочате точно есть
источник

ВМ

Вадим Мельничук... in symfony
Andrew Kovalyov
а что будет если не найдется записи по критериям?
тут я проверяю ифом
if ($repository->findOneBy(['name' => 'ServerVersion']))
       {
           $serverVersion = $repository->findOneBy(['name' => 'ServerVersion'])->getValue();
       }
источник

AK

Andrew Kovalyov in symfony
Александр Яковлев
ок, попробую другой вопрос. Если я вас правильно понял, обойтись можно без супервайзера, мол, докер эту работу делает не хуже:

могу ли я запускать консюмеры, еще и по нескольку процессов, еще и поднимать упавшие?
еще накину docker-compose up —scale на дев машинках можно, если у вас compose на проде - нельзя.
источник

AK

Andrew Kovalyov in symfony
Вадим Мельничук
тут я проверяю ифом
if ($repository->findOneBy(['name' => 'ServerVersion']))
       {
           $serverVersion = $repository->findOneBy(['name' => 'ServerVersion'])->getValue();
       }
а сколько запросов пойдет в базу с сим чудом?
источник

АЯ

Александр Яковлев... in symfony
ок, понял, спасибо за ответы. без желчи бы еще, конечно, но как повезет))
источник

ВМ

Вадим Мельничук... in symfony
Andrew Kovalyov
а сколько запросов пойдет в базу с сим чудом?
два
источник

👤U

👤 User in symfony
Владимир Плахотников
Есть древний баг с one-to-one. Если хочешь ленивую загрузку, то это не сработает и всегда будет джоинить связанную сущность
Ловил его на двунаправленной связи. Но они, как известно, не нужны. Лишние джойны на геттерах только ловишь.
источник

ВП

Владимир Плахотников... in symfony
👤 User
Ловил его на двунаправленной связи. Но они, как известно, не нужны. Лишние джойны на геттерах только ловишь.
Да, точно, на двунаправленной
источник

S

Slava in symfony
Всем привет)
подскажите, пожалуйста, как можно в контроллере понять, какой именно voter будет вызван из this->denyAccessUnlessGranted().
В проекте их очень много, и руками буду очень долго понимать по условиям.
sf 2.8
источник

Ш

Шурик in symfony
Slava
Всем привет)
подскажите, пожалуйста, как можно в контроллере понять, какой именно voter будет вызван из this->denyAccessUnlessGranted().
В проекте их очень много, и руками буду очень долго понимать по условиям.
sf 2.8
А можно поинтересоваться - а нахера это знать в контроллере?
источник

S

Slava in symfony
для дебага)
источник

Ш

Шурик in symfony
А в дебаг-панели они вроде отображаются, не?
источник

ПГ

Павел Г. in symfony
Раз уж зашел разговор про voters, какой правильный кейс их использования?
Вот допустим есть command/handler . Задача - редактирование только своей записи.  Это выходит надо запись получить в контроллере и пропихнуть ее в voters, прежде чем запускать handler? Не перегружается ли контроллер такими действиями?
Т.е. мы начала получаем запись по ID из репо, а потом ID запускаем в хэндлер и снова тянем из репо. Т.е. делаем это 2 раза. Это хорошо что у нас там IdentityMap, и нет лишних запросов.
источник

SM

Sergey Milegov in symfony
Slava
Всем привет)
подскажите, пожалуйста, как можно в контроллере понять, какой именно voter будет вызван из this->denyAccessUnlessGranted().
В проекте их очень много, и руками буду очень долго понимать по условиям.
sf 2.8
Все будут использоваться по очереди. Ставь точку остановки в контроллере и ныряй.
источник

Kd

Konstantin dmz9 in symfony
Павел Г.
Раз уж зашел разговор про voters, какой правильный кейс их использования?
Вот допустим есть command/handler . Задача - редактирование только своей записи.  Это выходит надо запись получить в контроллере и пропихнуть ее в voters, прежде чем запускать handler? Не перегружается ли контроллер такими действиями?
Т.е. мы начала получаем запись по ID из репо, а потом ID запускаем в хэндлер и снова тянем из репо. Т.е. делаем это 2 раза. Это хорошо что у нас там IdentityMap, и нет лишних запросов.
а ты в курсе что можно сразу entity закинуть в isGranted/denyAccessblabla и не мучаться
источник

S

Slava in symfony
Sergey Milegov
Все будут использоваться по очереди. Ставь точку остановки в контроллере и ныряй.
да, спасибо, так и сделал :)
источник

ПГ

Павел Г. in symfony
Konstantin dmz9
а ты в курсе что можно сразу entity закинуть в isGranted/denyAccessblabla и не мучаться
Так я об этои и говорю, что Entity надо достать, и делать это в контроллере.
источник

A

AlexS in symfony
Всем привет. Немного не по симфони, но попробую попросить помощи.
подскажите по событиям, которые генерирует сущность во время своей жизни. Сейчас у нас сделано через трейты+интерфейсы, типа $this->notify(new ShitHappens($this)) и потом postFlush события берутся через $еntity->publishEvents() и бросаются в диспатчер.
Есть ощущение, что уйти от трейтов и хранения событий в сущности было бы правильно. но возникает вопрос - как генерировать и отдавать в мир события?
Для их генерации нужно, чтоб "генерилка" их сторедж событий были либо внутри обьекта, либо приходили снаружи.
Если внутри - трейты, наследование, инжект, создание. Трейты дичь, наследование сущностей от BaseEntity - тоже, инжект - непонятно кем, как и когда. Создание какого-то eventEmiter'а внутри конструктора? Вызов статического метода EventService::foo(new Event)? Но тогда нужно как-то привязывать событие к конкретной сущности.
А если сторадж приходит снаружи, то добавление зависимостей к каждой операции, которая приводит к событиям (включая конструкторы) - тоже дичь.
Как быть, куда бежать?
Или я осел, зря парюсь и трейты норм ход в таком раскладе?
источник

Kd

Konstantin dmz9 in symfony
Павел Г.
Так я об этои и говорю, что Entity надо достать, и делать это в контроллере.
ну э да, достал в контроллере, чекнул права через isGranted или сразу кидаешь исключение через denyAccessUnlessGranted.
собственно, в документации же это и описано как кейс их использования.

насчет правильности - это еще подумать - правильность чего, типа в правильном ли месте ты это вызываешь?
но есть ведь твоя система где ты уже доверяешь данным между своими модулями, и есть внешний мир из которого приходят данные.
права чекаешь один раз - перед тем как продолжить работать. или ты сомневаешься надо ли их чекать в каждом "хендлере"?
есть ведь простая аналогия - аэропорт - проходишь осмотр один раз и дальше уже тусуешься в зоне вылета. так и тут - проверил один раз - а дальше ты уже в "доверенной" зоне где повторно всё то же самое проверять не имеет смысла.
источник