Size: a a a

2020 March 11

ЕР

Евгений Ромашкан in PHP
Rg Home
не афектит никак, в консюмере все равно не свежая запись
И откуда ей там взяться?
источник

RH

Rg Home in PHP
Евгений Ромашкан
И откуда ей там взяться?
ну в общем-то схема следующая
1. postUpdate: em->flush(user)
2. postUpdate: amqp->produce(user->id)
3. consumer: em->find(user->id)
4. consumer: user->status === тому который был ДО postEvent ивента, а нужен тот который стал ПОСЛЕ
источник

AN

Alexander Nazarov in PHP
Я правильно понял что в обработчике postUpdate вызывается еще раз flush? Разве это не запустит повторно обработку жизненых циклов?
источник

А

Алексей R in PHP
Aleksandr Khristenko
Хм? Оно посчитало, сколько эти 3 месяца APP стоит и пересчитало эту сумму по цене пхпшторма?
да, получилось с середины лета продлить до апреля 21 года
источник

BT

Bohdan Turchyk in PHP
как оно может прилетать раньше, если у тебя пхп синхронный?
источник

RH

Rg Home in PHP
Bohdan Turchyk
как оно может прилетать раньше, если у тебя пхп синхронный?
дык консюмер в супервизоре живет
источник

RH

Rg Home in PHP
Alexander Nazarov
Я правильно понял что в обработчике postUpdate вызывается еще раз flush? Разве это не запустит повторно обработку жизненых циклов?
это был просто эксперимент который не дал результатов
изначально flush не делался внутри ивента
источник

BT

Bohdan Turchyk in PHP
Rg Home
дык консюмер в супервизоре живет
но ведь ты публикуешь после флаша, а флаш ждет записи, нет?
источник

AN

Alexander Nazarov in PHP
Так сейчас у тебя так как ты скинул или нет? Ты уверен что этот flush не меняет юзера?
источник

RH

Rg Home in PHP
Сейчас внутри ивента нету флаша.
Проверяется статус у юзера и тут же шлется в конюсмер.
И консюмер получает не свежего юзера из em->find :(
источник

АС

Антон Смолин in PHP
На момент postUpdate транзакция еще не закоммичена
источник

RH

Rg Home in PHP
Антон Смолин
На момент postUpdate транзакция еще не закоммичена
Но если сделать commit(user); flush(); разве не зациклится ивент?

Или вопрос иначе: как отловить завершение коммита для энтити?
источник

AN

Alexander Nazarov in PHP
что то типа
$user->setStatus(1);
$em->flush($user);
amqp->produce(user->id)

Тебе прям надо все изменения пушить в очередь?
источник

RH

Rg Home in PHP
Alexander Nazarov
что то типа
$user->setStatus(1);
$em->flush($user);
amqp->produce(user->id)

Тебе прям надо все изменения пушить в очередь?
грубо говоря да, но у меня нету прямого доступа к  $em->flush($user);
по этому решаю через postUpdate

ну и расчитываю что user которые прилетает в postUpdate(LifecycleEventArgs $args) уже лежит такой в базе
источник

AN

Alexander Nazarov in PHP
Может конечно не то что надо, но может заюзать два события на postUpdate и postFlush ?
источник

RH

Rg Home in PHP
postFlush чет не приходил в голову
можно попробовать извратится и отсечь postFlush для create операции
но точно так же как с postUpdate не уверен, что postFlush отработает после коммита

в любом случае сейчас проверю, спасибо)
источник

DM

Dmitry MiksIr in PHP
Прям даже завидую, как некоторым людям удается расписать очевидные вещи в целый роман https://habr.com/ru/company/sportmaster_lab/blog/490912/
hr бренд беспощадный...
источник

И

Илья in PHP
Всем привет. Есть кто с opencart работает? нужно ошибку исправить. не могу ни как сам решить
источник

И

Илья in PHP
отображение кол-во товаров в корзине в моб версии. пример страници https://dom.myshoop.com.ua/schiptsy-dlya-volos-scarlett-sc-hs-60592
источник

Р

Руслан in PHP
Илья
Всем привет. Есть кто с opencart работает? нужно ошибку исправить. не могу ни как сам решить
Есть, фриланс
источник