Size: a a a

2021 March 01

JK

Jeka Kovtun in symfony
Привет всем. У меня такая проблема. Добавляю в мессенджер объект, который должен быть отправлен в будущем. Проверяю это так:
1. Слушаю ивент WorkerMessageReceivedEvent
2. Проверяю, если datetime объекта > currentTime
3. Если да (время ещё не наступило),  то ставлю $event->shouldHandle(false);

Вроде как всё работает, но проблема в том, что даже если время наступило, то обработчик так и не обрабатывает этот Message, хотя он всё ещё висит в таблице (в качестве транспорта использую doctrine).

В чём проблема? Других идей не нашёл, как добавлять сообщения в будущем
Есть же штатный механизм отправки сообщений по вермени.
https://symfony.com/doc/current/messenger.html#envelopes-stamps
Или я не понимаю в чём проблема.
источник

ИЛ

Иван Лещёв in symfony
Валентин Удальцов
тут как раз мемас рядом скинули в тему)
без обид, шутки ради)
я грузчиком на заводе работал
источник

A

Arky in symfony
а я школьником
источник

in symfony
Хм, в примере, в DelayStamp нужно указывать время в миллисекундах. Если сообщение должно быть отправлено через 30 дней, там число страшное получится. Почему-то мне кажется, что это не самый правильный вариант
источник

JK

Jeka Kovtun in symfony
Ну гонять постоянно через воркер и проверять - по моему ещё хуже.
источник

in symfony
Jeka Kovtun
Ну гонять постоянно через воркер и проверять - по моему ещё хуже.
Тоже верно... Ладно, думаю, что это в любом случае единственный вариант. Спасибо тебе за ответ!
источник

JK

Jeka Kovtun in symfony
Тоже верно... Ладно, думаю, что это в любом случае единственный вариант. Спасибо тебе за ответ!
Не за что.

И за cтрашное число беспокоится не стоит, там всё продумали ))) Под капотом, в БД хранится не задержка а timestamp когда его можно выполныть (available_at)
источник

in symfony
Jeka Kovtun
Не за что.

И за cтрашное число беспокоится не стоит, там всё продумали ))) Под капотом, в БД хранится не задержка а timestamp когда его можно выполныть (available_at)
Так, а как можно задать этот available_at? Мне из фронта приходит дата (01.04.2021 14:00 напрмер), не могу найти, где можно задать это значение, когда этот Message должен быть обработан. В противном случае буду пытаться с помощью Carbon перевести разницу от сегодняшней даты до будущей даты, в миллисекунды.
источник

in symfony
Jeka Kovtun
Не за что.

И за cтрашное число беспокоится не стоит, там всё продумали ))) Под капотом, в БД хранится не задержка а timestamp когда его можно выполныть (available_at)
Аа, всё понял, спасибо большое! Сделал так, может кому пригодится:

$delay = Carbon::now()->diffInMilliseconds($notification->getDatetime());
$bus->dispatch(new NotificationRequestMessage($notification),
[new DelayStamp($delay)]
);
источник

SP

Sergey Protko in symfony
Хм, в примере, в DelayStamp нужно указывать время в миллисекундах. Если сообщение должно быть отправлено через 30 дней, там число страшное получится. Почему-то мне кажется, что это не самый правильный вариант
Потому что пугаешься легко
источник

SP

Sergey Protko in symfony
Не делай в браузере Date.now()
источник

ЯЗ

Яков Зверев... in symfony
Народ, помогите, сделал нового пользователя в Линуксе, и не получается почему-то composer install сделать через docker exec, такая ошибка вот, кто знает почему?
источник

ЯЗ

Яков Зверев... in symfony
источник

D

Dmitry in symfony
прав не хватает
источник

ЯЗ

Яков Зверев... in symfony
Dmitry
прав не хватает
Да, не хватает, но почему?
источник

D

Dmitry in symfony
/var/www/app кто владелец ?
источник

ЯЗ

Яков Зверев... in symfony
Dmitry
/var/www/app кто владелец ?
В композере все правильно самом, проблема с правами именно с моим новым юзером которого я создал
источник

ЯЗ

Яков Зверев... in symfony
Dmitry
/var/www/app кто владелец ?
Юзер мой владелец везде
источник

ЯЗ

Яков Зверев... in symfony
источник

D

Dmitry in symfony
а запуск под www-data
источник