
Sergey
16.06.2017
11:21:09
типа "если был сделан заказ надо пересчитать статистику для каталога"
как бы статистика по каталогу к заказам вообще никакого отношения не должна иметь
это логика сбоку

Dinar
16.06.2017
11:21:50
Ивенты вообще надо использовать осторожно. Их же иногда очень сложно обнаружить, и невяное поведение системы получается.

Google

Sergey
16.06.2017
11:22:04
они чуть-чуть более явны
во всяком случае они не файрятся рандомно
но согласен полностью
ивенты - это крайняя мера для снижения связанности
если можно и без них что бы все было ок - то можно и без них
просто часто нельзя)

Dinar
16.06.2017
11:23:10
Ну да.
Либо ивент либо глубокий рефакторинг :)

Sergey
16.06.2017
12:35:27
у меня чаще ивенты становятся результатом глубогого рефакторинга)

Dinar
16.06.2017
12:40:22
тоже бывает. Когда слишком связано все. :)

Ivan
16.06.2017
14:15:35
сделал для каждого сервиса по дефолту public: false, т.к. нигде через контейнер сервисы не дёргаются,
теперь встаёт проблема, как писать тесты, которые раньше юзали контейнер для получения сервиса?
или public: false - это не то, к чему надо стремиться?

Google

Dinar
16.06.2017
14:32:19
То есть брали контейнер?
Мокать сервисы?

Ivan
16.06.2017
14:33:35
тестируемый сервис тоже брался из контейнера
это интеграционные тесты

Sergey
16.06.2017
15:09:43
а вообще очень напоминает картинку с палкой в велосипедном колесе

Ivan
16.06.2017
15:11:31
У меня на каждый репозиторий написан такой тест
Не писать тесты для репозиториев?
Писать иначе

Sergey
16.06.2017
15:30:10
не делать все сервисы приватными
лучше настрой анализатор кода что бы у тебя контейнер нигде в коде приложения не юзался
это намного более простой способ
забыл как тула называется которая это чекает

Ivan
16.06.2017
15:34:11
Хотел поставить авторегистрацию всех классов в AppBundle как приватные сервисы. Неиспользуемые удалились бы

Oleg
16.06.2017
15:45:02

Sergey
16.06.2017
16:16:51
вжопу liip

Oleg
16.06.2017
16:17:17

Google

Oleg
16.06.2017
16:17:40
Бюджетное решение же

Alexey
16.06.2017
17:42:33
Всем привет. У меня такой вопрос касающийся выборок из бд под api. Например у меня есть сущность News со связанными cущностями такими, как: Author, Comments, Likes и т.д.
В одном случае нужна выборка без связанных сущностей, другая с одной, третья со всеми плюс фильтрация по связываемым сущностям. Есть ли хорошие примеры реализаций таких выборок? Как быть в случае с получением большого количества сущностей, их нужно сериализовать либо сразу получать результат как массив? Было весьма интересно кто как делает.

Evgenii
16.06.2017
17:44:00
Группы сериализации?

Alexey
16.06.2017
17:48:55
А что насчет сложных запросов со множественными join ами? Насколько это накладно доставать с помощью доктрины сущности, а замет их нормализовать?

Dinar
16.06.2017
18:13:48
А кто нить имплементил PHpUnit 6 в симфони?

Pavel
16.06.2017
18:44:39

Dinar
16.06.2017
18:46:05
Я короче просто снес бридж и установил чистый пакет PHPUnit :D

Evgenii
17.06.2017
05:39:38
На devconf идет кто?

Sergey
17.06.2017
08:26:53
эт че?

Evgenii
17.06.2017
08:49:10
devconf.ru

Sir
17.06.2017
09:07:46
Есть кто-то, кто может помочь с Shared memory, семафорами и демонами?

Sir
17.06.2017
09:11:45
Собсвенно, даже на этом этапе у меня возникли трудности
ps не отображает php
Возможно проблема в том, что я запускаю это как команду Symfony, но через "php hello.php" тоже никакого эффекта
var_dump (extension_loaded('pcntl')) = true

Sergey
17.06.2017
09:14:12
а зачем тебе форк?
почему не запустить просто отдельную команду?
взять тот же Symfony/Process и его заюзать

Sir
17.06.2017
09:15:51
Вообще, мне нужно запустить несколько ветвей текущего процесса, причем каждой ветви должен быть доступен массив с данными. Когда одна из веток запрашивает данные из этого массива, остальные ждут - что-то такое.

Google

Sir
17.06.2017
09:16:13
То есть массив - должен быть общим для всех

Sergey
17.06.2017
09:17:19
смысл делать параллельность, если ты хочешь все равно мютексами закрыть?
массив данных случаем не имеет структуру очереди?

Sir
17.06.2017
09:21:08
Тогда как быть?
Не совсем понимаю, просто..
Я думал, что все параллельные процессы видят определенный массив.
Первый процесс берет первую свободную строку (это будет строка 1), меняет статус этой строки в общем массиве на "В РАБОТЕ", обрабатывает, потом опять меняет статус в общем массиве на "СВОБОДЕН".
Второй, соответсвенно, заходит в массив, берет вторую строку, так как первая занята и так далее. В итоге все процессы должны обработать все строки, но работать со строкой в текущий момент времени может только один процесс.
Да нет, просто массив, хотя это не принципиально

Sergey
17.06.2017
09:21:47
ну ты по сути и описал очередь)
запихиваешь все данные в очередь, делаешь элементарные консьюмеры
и разгребаешь
не имея боли с общими ресурсами
если есть на проекте кролик то бери его и динамически создавай-туши каналы и очереди, если нет и не хочется тащить - редис
сами процессы через Symfony/Process плодить

Admin
ERROR: S client not available

Sergey
17.06.2017
09:23:34
т.е у тебя будет главный процесс который наполил очередь и следом создал дочерних процессов, дождался пока они освободятся и после этого можно считать что задача выполнена

Sir
17.06.2017
09:23:56
Да, цель такая)
Кролика у меня нет, как и редиса
а с Symfony/Process - мне еще не доводилось работать
Как и с кроликом/редисом..

Sergey
17.06.2017
09:24:59
я так понимаю на проекте для кеша мемкешед используется?

Sir
17.06.2017
09:25:57
Дефалтно, с кешем связанного я ничего не трогал
?
Есть какой-то другой способ создать массив, который будет виден всем дочерним процессам и они смогут изменять его, если никто другой с ним не работает?

Google

Sergey
17.06.2017
09:32:23
ок.. а если в базу писать?

Sir
17.06.2017
09:33:14
я думал об этом..
В приципе, не возбраняется добавить в сущность пару необходимых мне полей. По факту именно с элементами сущности я и работаю
Или я чет не то говорю?)
Но нужно убедиться, что два процесса не возьмут на обработку один и тот же элемент

Sergey
17.06.2017
09:35:15
в мускуле есть механизмы блокировок, можно их юзать для этого

Sir
17.06.2017
09:36:07
Напрямую общаться с мусклом?
Создавая свою базу переж выполнением, а потом очищая ее?

Sergey
17.06.2017
09:37:07
достаточно таблицы, да через dbal к примеру

Sir
17.06.2017
09:37:35
А если порождать на один процесс больше?
И дополнительнй процесс будет по запросу отдавать свободную строку
Или совсем чухня?
https://github.com/huyanping/simple-fork-php
Это как-то может помочь, вроде

Sergey
17.06.2017
09:45:14
если у тебя работать будет только одна ветка - то тебе нужен один процесс
либо опиши почему ты так хочешь сделать, в чем задача
ибо может быть ты сам себе жизнь усложняешь


Sir
17.06.2017
09:46:00
Окей, не проблема
Возможно и правда усложняю, но хз, как сделать лучше и максимально просто
Есть данные, которые я вытянул из своей сущности
Нужно их обработать
Ничего не мешает мне составить обычный массив с этими данными..
Обработка должна происходить следующим образом:
Процесс берет первую свободную строку с данными, начинает её обрабатывать (другие процессы не должны её трогать, а должны взять следующую свободную строку)
Как только один из процессов закончил обработку своей строки, он снова говорит другим процессам, что всё ок - вы можете над ней работать
Каждый процесс должен пройтись по всем строкам моего массива
То есть по каждому элементу сущности
Например, у меня массив A размерностью 256
И нужно поработать с этим массивом (с каждым A[i]) пятью разными способами
Но над одним A[i] работать одновременно нельзя