
Sergey
24.10.2017
09:09:00
нам дают скажем 100гб архив с картинками и нужно его отпроцессить
картинки, документация, видосы и прочее гавно статическое к товару, которое юзер может скачать или посмотреть

Алексей
24.10.2017
09:09:50
ну я бы скриптиком разгребал его в очереди. А воркером обрабатывал в несколько потоков

Sergey
24.10.2017
09:10:26
каждый этап обработки это и есть отдельная очередь

Google

Алексей
24.10.2017
09:10:34
Ну да. Это немного другой кейс. Я говорил про более стандартный и простой. Сохранить аватарку юзера
Типа это делать перед флашем или после
Я сделал после
В ивенте

Sergey
24.10.2017
09:11:17
можно так же делать. пусть сабмитит свою фоточку, мы ему говорим что все окей, а дальше очереди ресайзят, чистят и сохраняют

Алексей
24.10.2017
09:11:50
Просто API куда приходит сущность и base64 файл

Sergey
24.10.2017
09:12:15
все равно остается проблема что ты чуваку сохранил фотку, на нее есть линка в его скажем альбоме
но фотка не сохранилась

Алексей
24.10.2017
09:12:28
Да
Такая херня остается
Окей. А если делать перед флашем то нужно сохранять консистентность

Sergey
24.10.2017
09:13:04
зависит в принципе от того что в конечном итоге хочешь) можно как ты говоришь положить в очередь и там пусть она долбит диски пока не сохранит

Google

Sergey
24.10.2017
09:13:17
но какой-то момент времени юзеру не будет доступен ресурс что он только что засабмитил через апишку
зато быстро ответ вернет

Алексей
24.10.2017
09:13:59
На самом деле ситуацию с местом или IO у нас не возможна. Сразу приходят алерты
ну как. Возможна.
Но маловероятна
Короче это допустимый риск в рамках задачи
И реализовывать скрипты контролирующие персистентность файлов и базы я не хочу
А еще в теории как идея:
В ивенете preCreate проверять доступность storage и резервировать место
Но это дополнительно время
Корче
всем все понятно

Sergey
24.10.2017
09:22:01
а на счет "не стоит использовать lifecycle ивентов в бизнес логике" уже честно не помню, либо я с окрамиусом так общался, либо где-то от него была статья или доклад, либо где-то в слаке было обсуждение. если у кого-то есть линка под рукой - поделитесь плз)

Dmitriy
24.10.2017
09:23:07
размазывание логики
а про репы у тебя есть интересные линки? )

Алексей
24.10.2017
09:23:23

Roman
24.10.2017
09:23:40
Джаст интерестинг

Sergey
24.10.2017
09:24:22
размазывание логики
еще как вариант ошибка внутри ивента не связанного с доктриной, может сломать ее

Алексей
24.10.2017
09:26:44
Нужно писать статью

Google

Алексей
24.10.2017
09:26:47
Имхо

Sergey
24.10.2017
09:27:32
за статьей это к @fes0r )

Sergey
24.10.2017
09:36:20
и изолировать

Sergey
24.10.2017
09:39:43
ждем 3ю доктрину, там вроде как хотели порезать эти интерфейсы

Sergey
24.10.2017
09:41:38
по сути флаш надо делать там где известно об окончании логической транзакции.

Алексей
24.10.2017
09:55:51

Roman
24.10.2017
10:09:51


Владимир
24.10.2017
10:18:37
- почти везде entity manager есть, где он нужен и не нужен, даже если нужно всего 1 репос достать. а em предоставляет еще работу с транзакциями и персистом, оно тебе точно везде нужно?
- в одном сервисе может доставаться 10 разных репосов и ты в принципе не заметишь что давным давно нарушил SRP и твой сервис раздулся до невменяемых размеров
- ты используешь сервис локатор, который признан злом еще десяток лет назад. об этом много чтива есть
- чтобы писать юнит тесты тебе нужны двойные стабы, стаб на ЕМ и стаб на репос, что не очень то и удобно и выразительно
- автовайринг симфони не можешь юзать
Давно удивляюсь зачем Симфони дает возможность делать все через жопу? Если есть сервисы, то почему бы не устроить с ними работу через автовайринг и прочую конфигу? Зачем нужно оставлять сервислокатор, да еще и пихать его во все туториалы как базовую функциональность? На кой ляд три варианта конфигурации (yaml, xml, php). И прочее Неужели из-за необходимости совместимости? Так уже мажорная 2 в версии на 3 сменилась. можно было легаси слать лесом. Мне кажется меньше универсальности будет симфони только на пользу.


Roman
24.10.2017
10:20:25

Pavel
24.10.2017
10:20:51

Sergey
24.10.2017
10:21:44

Владимир
24.10.2017
10:22:29
?

Pavel
24.10.2017
10:22:32
Ну и хорошо, что не ломают)

Alexandr
24.10.2017
10:22:40

Google

Sergey
24.10.2017
10:23:20
а вообще даже если уберут все эти возможности, то новички все равно будут бездумно абузить другие фичи

Pavel
24.10.2017
10:23:25

Sergey
24.10.2017
10:23:27
типа автовайринга и пихать по миллиону зависимостей

Alexandr
24.10.2017
10:24:07

Владимир
24.10.2017
10:26:02
То что автовайринг недавно появился это понятно. Но инъекция зависимостей была еще до начала второй версии. Почему ее не поставить во главу угла? Я всегда смеялся над людьми, которые хвалятся тем, что они симфонисты потому что в симфони есть DI и при этом они следуют официальным докам и не используют в своем пользовательском коде DI

Alexandr
24.10.2017
10:26:30
кстати, что совсем не кстати, но никто не сталкивался с тем, что нельзя иметь одинаково названные экшен-методы в разных контроллерах?
симфони все экшены разворачивает в goto портянку и в качестве лейбелов использует названия методов ... и коллизии там не допускаются

Sergey
24.10.2017
10:27:44

Admin
ERROR: S client not available

Владимир
24.10.2017
10:27:54
+
Тоже призадумался - никогда не сталкивался

Alexandr
24.10.2017
10:28:15
у меня в кэше создаётся вот такое чудо var/cache/dev/appDevDebugProjectContainerUrlMatcher.php

Sergey
24.10.2017
10:28:25

Alexandr
24.10.2017
10:28:54
а в нём на каждый экшен вот такая запись

Andrew
24.10.2017
10:29:41

Sergey
24.10.2017
10:29:43
будете смеяться, но я вообще забыл что в пхп есть goto конструкция
?

Alexandr
24.10.2017
10:30:17

Владимир
24.10.2017
10:30:39

Andrew
24.10.2017
10:31:21

Google

Andrew
24.10.2017
10:31:34
спасибо
я у себя на проектах решил не писать имена роутов - пусть автогенерятся.
немного геморно с рефакторингом — не всегда все удается менять

Алексей
24.10.2017
10:33:04
я надеюсь автовайринг не сделают основной фишкой

Andrew
24.10.2017
10:33:05
особенно если где-то имя роута конкатенируется

Владимир
24.10.2017
10:33:09

Sergey
24.10.2017
10:33:16

Алексей
24.10.2017
10:33:24
Разве с ним не сложнее контролировать все?

Sergey
24.10.2017
10:34:03
проще разрабатывать, меньше кода писать, удобно ж
из сложного наверное только регистрация сервисов по PSR

Алексей
24.10.2017
10:34:26
Теряешь контроль
не так очевидно

Andrew
24.10.2017
10:34:51

Владимир
24.10.2017
10:35:35
А! Да вот же. первая же статья про сервисконтейнер в шапке же тычет не приводя никаких оговорок:
http://symfony.com/doc/current/service_container.html

Dmitriy
24.10.2017
10:36:04
портянка дает какой-то контроль?

Владимир
24.10.2017
10:36:18
Уже ниже, правда есть, оговорка: The ability to type-hint a service in order to receive it was added in Symfony 3.3. See the controller chapter for more details.

Алексей
24.10.2017
10:36:48

Владимир
24.10.2017
10:38:17
Блин! Тут бы ветки обсуждения реализовать - не всегда соображаешь, что нужно ответить, а не просто написать

Sergey
24.10.2017
10:38:37