Size: a a a

2021 March 29

D

Dmitry in symfony
источник

AN

Alexander N in symfony
Сейчас кстати best practice я так понял код в src размещать? А если есть локальные бандлы, которые пока ещё не переехали в composer куда их девать?
источник

в

вαғғσмεттι in symfony
Нет, надл все в public/index.php писать
источник

AN

Alexander N in symfony
Раньше были времена, когда были src/AppBundle, src/OtherBundle, src/SomeshitBundle, но тогда код был частично в app
источник

AD

Andrey Dembitskyi in symfony
Alexander N
Сейчас кстати best practice я так понял код в src размещать? А если есть локальные бандлы, которые пока ещё не переехали в composer куда их девать?
Как придумаешь, так и будет
источник

G

Gas in symfony
Alexander N
Сейчас кстати best practice я так понял код в src размещать? А если есть локальные бандлы, которые пока ещё не переехали в composer куда их девать?
да хоть бы и в src1
источник

AS

Alexey Skobkin in symfony
Alexander N
Сейчас кстати best practice я так понял код в src размещать? А если есть локальные бандлы, которые пока ещё не переехали в composer куда их девать?
источник

VK

Vladyslav Kopaihorod... in symfony
Alexander N
Сейчас кстати best practice я так понял код в src размещать? А если есть локальные бандлы, которые пока ещё не переехали в composer куда их девать?
в чате бестпрактис банить за вопросы по бестпрактис
источник

AN

Alexander N in symfony
Vladyslav Kopaihorodskyi
в чате бестпрактис банить за вопросы по бестпрактис
Почему же.
источник

AL

Alexander Lozovsky in symfony
Alexander N
Раньше были времена, когда были src/AppBundle, src/OtherBundle, src/SomeshitBundle, но тогда код был частично в app
Пространства имён настраиваются в composer.json, создайте в корне BundleName и на него пространство имён.

Но вообще лучше конечно сразу в бандл выделять код.
источник

BB

Beknur Baltabaev in symfony
Alexander N
Раньше были времена, когда были src/AppBundle, src/OtherBundle, src/SomeshitBundle, но тогда код был частично в app
у меня и щас так на symfony4.4 😅
источник

AL

Alexander Lozovsky in symfony
Beknur Baltabaev
у меня и щас так на symfony4.4 😅
Вероятнее всего вам не нужны бандлы, достаточно было разложить код по папкам.

Бандл (пакет) по определению переиспользуемая часть.
источник

BB

Beknur Baltabaev in symfony
Alexander Lozovsky
Вероятнее всего вам не нужны бандлы, достаточно было разложить код по папкам.

Бандл (пакет) по определению переиспользуемая часть.
вы совершенно правы. Это мы сделаем на следующем апгрейде. Просто проект большой, и до этого руки не доходят)
источник

AL

Alexander Lozovsky in symfony
Beknur Baltabaev
вы совершенно правы. Это мы сделаем на следующем апгрейде. Просто проект большой, и до этого руки не доходят)
"Так вышло" и "исторически сложилось" никто не отменял, понимаю :)
источник

НО

Николай Оськин... in symfony
Всем привет.
Есть symfony messenger, который работает с rabbitMQ стандартным симфонийским AMQP транспортом.

Проблема следующая, у нас запущено 10 воркеров, но бывает так что в очередь задачи попадают редко, и только 2-3 воркера работают, остальные простаивают.
Хендлеры при обработке сообщений могут пустить в какую-то другую очередь сообщения.
Но из-за того, что rabbitmq соединение простаивает, сервер rabbitmq обрубает соединение по таймауту.
И получаю ошибки: "Library error: connection closed unexpectedly" при попытке задиспатчить сообщение из хендлера.

При этом в стандартном php-amqp нет возможности проверять живое ли соединение. Метод isConnected() всегда возвращает true, даже если выключить RabbitMQ сервер.

Есть одно решение, но оно мне кажется костыльным.
Можно запускать
php bin/console messenger:consume
с флагом —time-limit в N секунд, а при коннекте к RabbitMQ тоже выставлять у клиента таймаут в эти же N секунд, тогда, кажется, проблема обрыва соединений будет решена.

Может кто сталкивался?
источник

AD

Andrey Dembitskyi in symfony
Николай Оськин
Всем привет.
Есть symfony messenger, который работает с rabbitMQ стандартным симфонийским AMQP транспортом.

Проблема следующая, у нас запущено 10 воркеров, но бывает так что в очередь задачи попадают редко, и только 2-3 воркера работают, остальные простаивают.
Хендлеры при обработке сообщений могут пустить в какую-то другую очередь сообщения.
Но из-за того, что rabbitmq соединение простаивает, сервер rabbitmq обрубает соединение по таймауту.
И получаю ошибки: "Library error: connection closed unexpectedly" при попытке задиспатчить сообщение из хендлера.

При этом в стандартном php-amqp нет возможности проверять живое ли соединение. Метод isConnected() всегда возвращает true, даже если выключить RabbitMQ сервер.

Есть одно решение, но оно мне кажется костыльным.
Можно запускать
php bin/console messenger:consume
с флагом —time-limit в N секунд, а при коннекте к RabbitMQ тоже выставлять у клиента таймаут в эти же N секунд, тогда, кажется, проблема обрыва соединений будет решена.

Может кто сталкивался?
Heartbeat пробовали?
источник

НО

Николай Оськин... in symfony
Andrey Dembitskyi
Heartbeat пробовали?
нет, а как из php отправлять эти heartbeats, если он синхронный?
источник

AD

Andrey Dembitskyi in symfony
Николай Оськин
нет, а как из php отправлять эти heartbeats, если он синхронный?
В документации messenger есть опция для конфига
источник

НО

Николай Оськин... in symfony
в доке 5.2 есть, в 4.3 нету про это ничего.
но и в 5.2 есть note
"Note, librabbitmq has limited heartbeat support, which means heartbeats checked only during blocking calls."
источник

НО

Николай Оськин... in symfony
судя по описанию в php-amqp репе
"heartbeats are limited to blocking calls only, so if there are no any operations on a connection or no active consumer set, connection may be closed by the broker as dead."
мне это не поможет так как вообще нет никаких операций в соединении, ни консьюминга, ни отправок
источник