
Maksim
01.06.2018
08:19:56


Sergey
01.06.2018
08:21:14
просто ты уходишь от удобной для новичков модели "мой процесс изрлирован от других и в целом он обрабатывает один запрос и потом умирает" к "воу теперь мой процесс может обрабатывать несколько запросов и мне надо чистить после запроса что бы на следующий никак не влиять"

Google

Sergey
01.06.2018
08:22:38
хотя опять же ты можешь просить php-pm убивать воркеры после каждого запроса, просто это будет.... не так эффективно
всеравно эта модель проще чем "мой процесс может обрабатывать несколько запросов одновременно и потому мне важна изоляция эффектов на уровне приложения"

Maksim
01.06.2018
08:32:19
> нет, система без сайд эффектов не может делать ничего полезного. полностью stateless тоже (можно привязывать к запросу стэйт)
Ну да, я типа и имел в виду, что поведение сервиса должно быть детерменированно, что не должно после запроса остаться в его состоянии какой-то хрени.
> всеравно эта модель проще чем "мой процесс может обрабатывать несколько запросов одновременно и потому мне важна изоляция эффектов на уровне приложения"
Ты про модель просить убивать воркеров?
А вообще, думаю нужно покопаться в исходникакх и попробовать покрутить эту штуку, тогда уже станет всё понятнее.

Sergey
01.06.2018
08:32:58
> Ты про модель просить убивать воркеров?
нет, я про варианты с event loop (reactphp, amphp)

Maksim
01.06.2018
08:33:02
В исходниках копаться не стоит))) понятнее точно не станет)

Sergey
01.06.2018
08:33:26
> А вообще, думаю нужно покопаться в исходникакх и попробовать покрутить эту штуку
ты когда-нибудь писал консьюмеры очередей на php?

Maksim
01.06.2018
08:33:38

Sergey
01.06.2018
08:34:00
php-pm это простой менеджер процессов. Он тебе поднимает твое приложение в отдельных воркерах. Дальше твое приложение должно уметь после обработки запроса принять новый. Или нет. В этом случае процесс умрет и поднимется новый
если хочешь побаловаться - попробуй написать CLI скрипт, сделать папочку с запросами (файлики) и пусть твой скрипт будет рандомом файлики на вход принимать

Артур Евгеньевич
01.06.2018
08:35:08

Maksim
01.06.2018
08:35:25
Еще вопрос что считается обработкой запроса. Если речь про всякие реакты/ампы, всё будет сложнее

Sergey
01.06.2018
08:35:31

Maksim
01.06.2018
08:35:56

Google

Sergey
01.06.2018
08:36:18
это обычно не по зубам среднестатистическому php-нику.

Maksim
01.06.2018
08:36:52
У ампа пул под постгрю есть, тут проще все

Sergey
01.06.2018
08:37:02
давно его не тыкал

Maksim
01.06.2018
08:37:18
У реакта нету, вроде

Sergey
01.06.2018
08:37:22
я лучше на go каком такие штуки писать буду. Не потому что на php нелья а потому что вжопу php

Maksim
01.06.2018
08:37:49
Прочего и не ожидал))

Sergey
01.06.2018
08:38:23
не ну хотя бы ради разнообразия.... уж больше 10-ти лет пишу на пыхе, и только парочка проектов на бэке была не на нем....

Bohdan
01.06.2018
08:40:53
меня написание консьюмеров на го смущает только по причине отсутствия доступа к доменной логике...

Артур Евгеньевич
01.06.2018
08:41:49
а какие плюсы вообще от того что процесс висит? не тратиться время на инициализацию?

Bohdan
01.06.2018
08:41:55
бутстраппинг, да
я где-то видел бенчмарк запуска симфы на php-pm

Артур Евгеньевич
01.06.2018
08:45:57
а вот когда процесс висит в памяти он какие-то ресурсы же тратит? т.е как минимум память занимает + процессорное время на "слушание" входящих запросов
у меня по этой теме вообще пробел жирный,(потоки, процессы, асинхронность и т.д) всё собирался таненбаума прчоитать но так и не дошел

Sergey
01.06.2018
08:51:04
ну то есть если у тебя 1 запросв час то php-pm тебе явно не нужен, а если запросов 100 в секунду то....
можно нехило так лэтенси запросов оптимизнуть

Артур Евгеньевич
01.06.2018
08:51:57
не в плане php-pm а вообще

Maksim
01.06.2018
08:53:02
Epoll загугли

Google

Sergey
01.06.2018
08:55:56
типа простой TCP сервер который слушает коннекты и отправляет обратно то что прислали.
это такой вот hello world для сетей
(пишется в строчек 10-20 на php)

Oleg
01.06.2018
09:52:21
Здравствуйте. Хочу задать примитивный вопрос (https://toster.ru/q/50496) о том, кто-как выносит зависимость контроллера от ема.
Есть вариант с оборачиванием в сервис с транзакцией, но не уверен, что это лучший вариант.

Max
01.06.2018
09:55:28

Oleg
01.06.2018
09:56:31
Я надеялся на это, когда скидывал вопрос на тостере, ответа там так и не дали в принципе =)

Max
01.06.2018
09:58:35

Bohdan
01.06.2018
09:58:47
насколько я помню, у этого человека есть именно такой сервис для флашей

Oleg
01.06.2018
10:00:10
Например это https://github.com/schmittjoh/JMSAopBundle/blob/master/Resources/doc/index.rst

Max
01.06.2018
10:01:12
А чем для тебя плохо делать flush в контроллере?

Max
01.06.2018
10:01:38
а всю работу с em в сервисах?
Точнее в репозиториях
АОП норм штука, но нужна ли она для твоих текущих операций

Oleg
01.06.2018
10:07:33
Мне просто высказали фе после код ревью, но не сказали чего хотят там увидеть, вот у меня и появились сомнения.
Аргументы почему фе были вида "контроллер ничего не должен знать про ем, это не его облать ответствености".

Артур Евгеньевич
01.06.2018
10:12:56
я так до конца и не понял подход доктрины
на текущем проекте "флаш" делается в репозитории

Max
01.06.2018
10:15:14

Google

Артур Евгеньевич
01.06.2018
10:15:21
т.е два варинта:
если нормлаьный код, то в апликейшен сервисы инджектятся репозитории, в которые инджектятся маперы
ну или если быстрокод без норм модели, то просто что то типо маперов(а по факту обертка над sql и прочим) индежктится в сервис и оттуда вызывается

Aleh
01.06.2018
10:15:54

Артур Евгеньевич
01.06.2018
10:16:12

Admin
ERROR: S client not available

Aleh
01.06.2018
10:16:24

Oleg
01.06.2018
10:16:42
а чья?
Не сказали, вот тут и интересуюсь

Артур Евгеньевич
01.06.2018
10:16:50

Max
01.06.2018
10:16:52
вот посмотри сюда и посмотри на паттерны

Sergey
01.06.2018
10:19:22
можно не изолировать и навесить какой-нибудь анализатор который будет следить что никто в контроллерах ничего кроме flush не вызывает
ну то есть смысл в том что бы кто-нибудь не замутил в контроллере $em->createQueryBuilder() и пошел в пляс
хотя на маленьких проектах даже это может быть оправдано
p.s. у меня необходимость вводить отдельный сервис который флашит изменения связаны с тем что у меня 2 unit of work))))
типа доктрина + еще одна хрень, и мне надо в определенном порядке действия между двумя флашами делать.... потому я это изолирую в сервис отдельный
а так обычно мне лень, хотя опять же дело на 1 минуту


Oleg
01.06.2018
10:23:15
То есть если не злоупотреблять, чисто flush не таки плох. В принципе точно так же с командами и всякими джобами?

Евгений
01.06.2018
16:18:53

Google

Евгений
01.06.2018
16:19:05
Заодно и процесс не помрет после завершения работы.

Артур Евгеньевич
01.06.2018
16:42:51

Aleh
01.06.2018
16:43:28

Артур Евгеньевич
01.06.2018
16:46:15
но они не всегда же нужны

Aleh
01.06.2018
16:48:30
Если ты работаешь с сущностями, то всегда

Артур Евгеньевич
01.06.2018
16:51:10
я к тому что некоторые бизнес действия укладываются в одну операцию...
Получили конкретную модельку по id, изменили поле. Зафлашили.

Hell
01.06.2018
16:51:16
кстати, я понял, почему Repo Pattern & UOW - отстой

f4rt~
01.06.2018
16:52:30
хах, а ну, поведай
особенно UoW

Hell
01.06.2018
16:52:45
он подерживает 2 и более базы данных?
одновременно

Dmitriy
01.06.2018
16:53:14
он еще минет по утрам не делает. Согласен, UOW отстой
зачем он вообще тогда нужен?

Артур Евгеньевич
01.06.2018
16:53:41

Hell
01.06.2018
16:53:44
зато оченЬ хорошо делает BDSM