yii2-queue: Email sending problem in queue/listen mode

Hi, thanks for the great extension. I faced with the problem of sending email when jobs running by ./yii queue/listen. Seems like Swift_SendmailTransport lost connection after a while. As a temporary solving I am closing connection manually before sending emails, but I think it’s wrong way. Please tell me if you met a similar problem how you solve it?

About this issue

  • Original URL
  • State: closed
  • Created 7 years ago
  • Comments: 16 (6 by maintainers)

Most upvoted comments

Видел решение с job’ами оформленными в виде консольных экшенов. Смысл был в том, что queue/listen никаких работ не выполнял сам, он только мониторил очередь и при обнаружении нового задания стартовал новый консольный процесс

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

На правах костыля можно попробовать:

Yii::$app->set('mailer', Yii::$app->getComponents()['mailer']);

Этот код с помощью сервис-локатора уничтожит mailer-объект, но оставит его конфиг. А, при первом обращении к Yii::$app->mailer, объект будет создан заново.

А где у Вас переменная SwiftMailer’a для подключения к SMTP-серверу находится?

Правильно будет при каждом запуске задачи открывать соединение и в конце работы его закрывать.