@symfony_php

Страница 235 из 1418
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
это интеграционные тесты
у тебя ж там ContainerBuilder, подменяй дефинишены

а вообще очень напоминает картинку с палкой в велосипедном колесе

Ivan
16.06.2017
15:11:31
У меня на каждый репозиторий написан такой тест

Не писать тесты для репозиториев?

Писать иначе

Sergey
16.06.2017
15:30:10
не делать все сервисы приватными

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

это намного более простой способ

забыл как тула называется которая это чекает

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

Sergey
16.06.2017
16:16:51
LiipImagineBundle + flysystem
flysystem + imaginary + реверс прокси кэш или cdn

вжопу 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
А кто нить имплементил PHpUnit 6 в симфони?
Да вроде надо только phpunit-bridge обновить и все

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] работать одновременно нельзя

Страница 235 из 1418