@oop_ru

Страница 662 из 785
Sergey
01.06.2018
08:21:14
Т.е. получается нужно при использовании php-pm сервисы писать stateless, без сайд-эффектов?
нет, система без сайд эффектов не может делать ничего полезного. полностью stateless тоже (можно привязывать к запросу стэйт)

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

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?

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

если хочешь побаловаться - попробуй написать CLI скрипт, сделать папочку с запросами (файлики) и пусть твой скрипт будет рандомом файлики на вход принимать

Артур Евгеньевич
01.06.2018
08:35:08
php-pm это простой менеджер процессов. Он тебе поднимает твое приложение в отдельных воркерах. Дальше твое приложение должно уметь после обработки запроса принять новый. Или нет. В этом случае процесс умрет и поднимется новый
так это вообще реально на пхп со сколько нибудь существенной нагрзукой? имею ввиду потенциальную проблему с утечкой памяти, если процесс будет как демон висеть не умирая

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

Google
Sergey
01.06.2018
08:36:18
Еще вопрос что считается обработкой запроса. Если речь про всякие реакты/ампы, всё будет сложнее
ну я о том и говорю, схема работы php-pm вообще не подразумевает перепись приложения, оно просто должно после себя чистить. А всякие ayres/reactphp там придется пул коннекшенов вводить к базе, сложнее с зависимостями и т.д.

это обычно не по зубам среднестатистическому 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
а вот когда процесс висит в памяти он какие-то ресурсы же тратит? т.е как минимум память занимает + процессорное время на "слушание" входящих запросов
"слушанье" не тратит процессорные мощности (спасибо системным штукам вроде select/epoll). Память то что жрется - ну и ладно

ну то есть если у тебя 1 запросв час то php-pm тебе явно не нужен, а если запросов 100 в секунду то....

можно нехило так лэтенси запросов оптимизнуть

Артур Евгеньевич
01.06.2018
08:51:57
"слушанье" не тратит процессорные мощности (спасибо системным штукам вроде select/epoll). Память то что жрется - ну и ладно
а как оно работает? Т.е есть порт, и есть какаяя то функция типо isRequestNow которая вызывается дохрена раз в скунду?

не в плане php-pm а вообще

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

Google
Sergey
01.06.2018
08:55:56
а как оно работает? Т.е есть порт, и есть какаяя то функция типо isRequestNow которая вызывается дохрена раз в скунду?
попробуй написать свой ping сервер, это весело, занимает не много времени и ты больше будешь понимать как все это работает

типа простой 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
Я надеялся на это, когда скидывал вопрос на тостере, ответа там так и не дали в принципе =)

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 и прочим) индежктится в сервис и оттуда вызывается

https://martinfowler.com/eaaCatalog/
да спасибо, эт я знаю) но я вот не могу понять, Entity Manger это что такое зачем он нужен?

Артур Евгеньевич
01.06.2018
10:16:12
Admin
ERROR: S client not available

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
Аргументы почему фе были вида "контроллер ничего не должен знать про ем, это не его облать ответствености".
контроллер должен знать о том что надо зафлашить изменения, он же контроллер. Другой момент что EntityManager слишком жирный сервис и иногда хочется изолировать только flush

можно не изолировать и навесить какой-нибудь анализатор который будет следить что никто в контроллерах ничего кроме flush не вызывает

ну то есть смысл в том что бы кто-нибудь не замутил в контроллере $em->createQueryBuilder() и пошел в пляс

хотя на маленьких проектах даже это может быть оправдано

p.s. у меня необходимость вводить отдельный сервис который флашит изменения связаны с тем что у меня 2 unit of work))))

типа доктрина + еще одна хрень, и мне надо в определенном порядке действия между двумя флашами делать.... потому я это изолирую в сервис отдельный

а так обычно мне лень, хотя опять же дело на 1 минуту

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

Евгений
01.06.2018
16:18:53
То есть если не злоупотреблять, чисто flush не таки плох. В принципе точно так же с командами и всякими джобами?
Да, не так он и плох, но сама схема не очень, и лучше конечно nginx + php-fpm и отвечать встроенными средствами.

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

Артур Евгеньевич
01.06.2018
16:42:51
управление unit of work и identity map
так и не понял зачем это из репозитория выносить...

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 отстой

зачем он вообще тогда нужен?

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

Страница 662 из 785