@symfony_php

Страница 352 из 1418
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
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
а про репы у тебя есть интересные линки? )
https://matthiasnoback.nl/2014/05/inject-a-repository-instead-of-an-entity-manager/ из старых

за статьей это к @fes0r )

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

Sergey
24.10.2017
09:41:38
за статьей это к @fes0r )
а что? что за статью?

Сергей, ну а вот где вы делаете флаш? В сервисе (тогда инжектите в сервис, зависимость от доктрины)?
контроллеры - хорошее место что бы делать флаш. Ну или если ты загоняешься по всяким там command bus - можно как декоратор делать

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

Roman
24.10.2017
10:09:51
в em->transactional() иногда заворачиваю, а вообще в сервисах всегда
Хм, transactional() очень удобное место. Если ошибка вылетает, то и флаш не юзается. @fes0r А если надо выполнить отправку письма юзеру после успешного сохранения, вы заворачиваете флаш в try - catch, и отсылаете письмо после флаша сразу, моя логика верна?

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

Sergey
24.10.2017
10:21:44
Ты смотришь на это только со своей колокольни. Авторы же фреймворка смотрят чуть шире
авторы сами не в восторге, но выбора нет. обратную совместимость ломать нельзя. это ж не ларавель

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

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

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

Pavel
24.10.2017
10:23:25
можно сделать форк SymfonyDistilled )
Зачем?) С флексом ты можешь какие хочешь компоненты использовать

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 портянку и в качестве лейбелов использует названия методов ... и коллизии там не допускаются

Admin
ERROR: S client not available

Владимир
24.10.2017
10:27:54
+

Тоже призадумался - никогда не сталкивался

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

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

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
я давно туториалы симфони не смотрел, можно линк где это пропагандируют?
Кстати, с пол пинка не нашел. Однако помню что были.

Алексей
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
гарантию как минимум
эту гарантию кривой compile pass разнесет в щепки

А! Да вот же. первая же статья про сервисконтейнер в шапке же тычет не приводя никаких оговорок: http://symfony.com/doc/current/service_container.html
когда начнут активно толкать AbstractController вместо обычного Controller, который везде используется. тогда и в контроллерах не станет прямых вызовов контейнера

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