@symfony_php

Страница 296 из 1418
Sergey
19.09.2017
17:21:24
у тебя не бывает такого что нужно что-то сохранить, а потом в соседнем сервисе идет выборка и то что ты сохранил в ней должно быть?

да и транзакцию нужно закрывать как можно раньше

Sergey
19.09.2017
17:22:27
у тебя не бывает такого что нужно что-то сохранить, а потом в соседнем сервисе идет выборка и то что ты сохранил в ней должно быть?
как-то нет. У меня большая часть подобного запускается уже после flush по доменным ивентам (как правило)

Google
Sergey
19.09.2017
17:22:29
ты вот наколбасил каких-то измненений, сделал после этого еще кучу вещей, а потом только пытаешься выполнить транзакцию и у тебя она падает

Sergey
19.09.2017
17:24:00
ну вот давай приведу пример: есть регистрация аккаунта пользователя. Штука простая. После успешной регистрации мне надо слинковать пользователя и его страну, забить для пары рефералки связи, сгенерить еще пару штук разных...

ты про такие кейсы?

Dmitry
19.09.2017
17:25:03
При учете того, что пользователь без линкованной страны - вообще не валидное состояние

Sergey
19.09.2017
17:25:47
При учете того, что пользователь без линкованной страны - вообще не валидное состояние
ну у меня "страна" вымышленная, это типа как элемент геймификации и часть другого контекста. Так что "не слинковано" это не невалидно. Просто другой контекст ничего знать не знает о пользователе и ему недоступна часть функционала.

у меня это идет в таком порядке: - регистрация пользователя - flush - эмитится событие UserRegistered с айдишкой сущности например - событие может быть обработано хоть в рамках текущего запроса хоть через очередь. А потому дальше просто разные штуки выполняются так как им надо

Dmitry
19.09.2017
17:27:08
ну значит у тебя момент времени, когда в базе неслинкованный пользователь, а этого быть не должно

Sergey
19.09.2017
17:27:33
если "не удалось слинковать" по каким-то причинам - мне важнее что бы регистрация прошла

Dmitry
19.09.2017
17:28:10
не, когда это норм, тут ваще пофиг где flush :) речь именно о свзязанных изменениях... ну банально $user1->decrease(); $user2->increase()

Sergey
19.09.2017
17:28:48
не, когда это норм, тут ваще пофиг где flush :) речь именно о свзязанных изменениях... ну банально $user1->decrease(); $user2->increase()
в этом случае у меня сначала делается flush при добавлении новой транзакции, и генерится доменное событие, которое вызывает 2 sql запроса в своей транзакции

если тебя беспокоит атомарность (что бы небыло double spent) то тут вопрос локов

Dmitry
19.09.2017
17:29:46
ну так эту новую транзакцию ты где стартуешь

Google
Sergey
19.09.2017
17:29:48
мне иногда кажется ты живешь в мире где существуют только простые кейсы типа зарегался юзер

Sergey
19.09.2017
17:29:53
p.s. у меня финансовые штуки вообще на блокчейне где то что транзакция прошла еще ничего не значит(

ну так эту новую транзакцию ты где стартуешь
при обработке доменного события

эти "балансы" которые increase/decrease я бы менял через корень агрегата (транзакция). Но это только для write модели. Я ж не дурак лэджер делать на доктрине

Dmitry
19.09.2017
17:31:52
а ловит это событие кто-то в persistance?

не, ну про корень агрегата я сразу сказал, когда он есть вопросов нет ;) просто лень выдумывать случай, когда нужны связанные изменения и для них нет корня

Sergey
19.09.2017
17:32:59
типа саги всякие

у меня слишком примитивные проекты, не дорос я до саг

Dmitry
19.09.2017
17:34:15
эм... нет
т.е. код обработки события в домене?

Sergey
19.09.2017
17:34:30
т.е. код обработки события в домене?
когда как, иногда в домене, иногда нет

точнее именно листенеры не должны быть в домене

это как "точки входа" инициирующие новые транзакции

есть штуки типа "послать нотификашку" а есть штуки типа "слинковать два аргегата"... правда для последнего не могу придумать нормальный кейс

разве что статистика

ну вот у меня для рефералки например надо

Sergey
19.09.2017
17:36:59
короч я сча использую кастыльный эдакий недо-cqrs

Google
Sergey
19.09.2017
17:37:03
без event sourcing

Dmitry
19.09.2017
17:37:15
ну смотри, в данном случае в роли логической транзакции ты используешь событие. Т.е. все связанные иземенения, которые должны меняться в базе атомарно для других наблюдателей ты оформляешь в виде единого события... а листенер по сути uow и будет (по сути точно, а не по интерфейсу фаулеровскому)

Dmitry
19.09.2017
17:39:12
uow ну типа да, атомарное изменение, для этого uow и придумали, что бы атомарно менять набор разных объектов

Sergey
19.09.2017
17:40:07
ну тогда типа того.... но у меня еще небыло (а может и было и я проиграю когда-нибудь) что бы эти штуки надо было с соблюдением всех зависимостей строить (типа откатилась 3-я транзакция - надо откатывать 2 предыдущие)

Dmitry
19.09.2017
17:40:40
так и не должно быть такого

Sergey
19.09.2017
17:41:16
мне казалось что saga именно про это)

Dmitry
19.09.2017
17:43:05
мне казалось, что про то, что если у нас откатилась внутрях где-то 3-я транзакция, то 2-я этого заметить не должна ;)

Sergey
19.09.2017
17:45:10
Надо освежить

Dmitriy
19.09.2017
17:46:40
Сергей видимо про 3й шаг одной транзакции?

Gaiaz Iusipov
19.09.2017
19:05:03
Ребята, а в задеплоином приложении можно удалить /app ? конфиги скомпилированы, шаблоны тоже...

с учетом того, что перекомпиляции на проде не будет

Gaiaz Iusipov
19.09.2017
19:43:52
не
да у меня в итоге затык произошел когда я Resource/views удалил, остальное впринципе не сломало ничего

Ivan
19.09.2017
19:44:33
у меня в app ещё autoload.php и AppKernel.php лежат

Daniel
19.09.2017
19:49:36
Але оп

Репозиторий должен быть завязан только на доктрине?

Хры что ли

Gaiaz Iusipov
19.09.2017
19:51:45
твиг пытается подгружать?
думаю он просто проверяет, что шаблоны на месте и не надо ничего перекомпилировать

Google
Gaiaz Iusipov
19.09.2017
19:52:01
у меня в app ещё autoload.php и AppKernel.php лежат
ну эти понятное дело оставил =)

Daniel
19.09.2017
19:52:05
А если у меня отдельный сервис для проекта? Репозиторий может стучать на ендпоинт другого сервиса и десериализовывать полученные данные в модели? *(Так то норм кейс)*

Или это не репозиторий?

Gaiaz Iusipov
19.09.2017
19:53:06
Daniel
19.09.2017
19:53:14
Ты не понял

Gaiaz Iusipov
19.09.2017
19:53:20
ага :(

Ivan
19.09.2017
19:53:37
Sergey
19.09.2017
21:48:42
Сергей видимо про 3й шаг одной транзакции?
не, я про случаи когда у тебя операция разделена на три логических транзакции (микросервисы как пример)

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

то есть "откат" изменений происходит посредствам новых ивентов которые компенсируют "фэйлы"

Dinar
19.09.2017
22:43:11
Подскажите пожалуйста, что за фигна такая, которая возникает только при деплое на сервер. https://pastebin.com/rgnegZwj Почему доктриновские прокси недоступны? Причем это только время от времени происходит.

Dmitriy
20.09.2017
04:27:58
как я разумею транзакции начинаются когда в проекте появляется личный счет пользователя

слава богу у нас пока таких кейсов нет )

Dinar
20.09.2017
05:48:24
у тебя вероятно обрабатывались запросы, а var/cache при деплое снес
Так я думал сносить кэш - должно быть безобидным занятием?

Boris
20.09.2017
06:17:46
то я б писал на зенде)
По какой причине если не секрет?

Sergey
20.09.2017
06:18:51
Так я думал сносить кэш - должно быть безобидным занятием?
у тебя ж он в файлах хранится, поэтому не очень безобидное. при деплое лучше отдельный инстанс приложения поднимать(соседняя папка, отдельный контейнер и тд)

По какой причине если не секрет?
ну на тот момент лет 6 занимался именно зендой и на ней писал лучше всего) сейчас бы выбрал kotlin+spring

Ivan
20.09.2017
06:45:25
Так деплоер делает все это ж.
может, параллельно с очисткой кэша деплоер ещё что-то делает

Google
Ivan
20.09.2017
06:47:01
нее

тут request, значит, вероятно http запросы

Dinar
20.09.2017
06:47:26
может, параллельно с очисткой кэша деплоер ещё что-то делает
Я потом вручную почистил кэш. Проблема осталась.

Sergey
20.09.2017
06:49:02
как я разумею транзакции начинаются когда в проекте появляется личный счет пользователя
нет, транзакции начинаются когда у тебя для одной операции нужно более одной операции записи

Sergey
20.09.2017
09:20:44
привет, подскажите плиз, возможно ли из кода поменять параметры стороннего бандла?

Roman
20.09.2017
09:21:13
wow

Gaiaz Iusipov
20.09.2017
09:21:25
кто-нибудь знает какой симфоневский адаптер сохранит кэш в файлик var/cache, а не в /tmp (tmpfs)

Alexey
20.09.2017
09:21:47
Всем привет. Как можно в бандле зарегистрировать несколько расширений контейнера public function getContainerExtension() { return [ new UserExtension(), new PostExtension() ]; } Хотелось что-то типо такого

Можно ли

Daniel
20.09.2017
09:26:25
Ребята, вопрос по рейс кондишенам и архитектуре согласованности в очередях

У вас тоже телеграм не работает?

С телефона вроде ок, с компа вообще не фурычит (убунта)

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