Сложности с добавлением заданий в очередь Laravel?

Ссылка скопирована
1 ответ

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

Что делал:
1. в файле .env установил QUEUE_CONNECTION=database
2. создал миграцию php artisan queue:table
3. выполнил миграцию php artisan migrate
4. создал задание php artisan make:job SendEmail
5. в методе handle() джобса SendEmail написал код отправки email
6. в контроллере добавляю задание в очередь SendEmail::dispatch()

В результате рассчитываю увидеть в таблице jobs задание в очереди default, но табличка пустая.
В не зависимости от того, что я пишу в методе handle() моего джобса (например прописал dd('test')), все равно табличка пустая.

Как я понял из документации, там должно появится задание, которое будет выполнено после ввода команды php artisan queue:work. Но для его выполнения она должно там быть у меня же задание не попадает в табличку jobs.
Подскажите в чем может быть дело?

Дополнительно:

Кэш конфигов есть? Чистил?

  • JhaoDa,
    Кеш конфигов не создавал. Т.е. не вводил команду php artisan config:cache
    И соответственно не чистил
  • dch3, ты не ленись, проверь.
  • JhaoDa,
    спасибо за совет!
    честно говоря не знаю как проверить. Ща буду читать доки
  • JhaoDa
    JhaoDa, сенсей, ты оказался прав. Я почистил кэш и все полетело.
    Мое почтение!
  • JhaoDa

    После очистки кэша в таблицу jobs начали попадать задания, а после команды php artisan queue:work задания начали выполнятся (в командной строке я получаю вывод, что мой класс джобсов AppJobsSendEmail выполнен ("Done").

    Проблема в том, что на почту письма перестали приходить (перед очисткой письма приходили, но задания в таблицу не добавлялись).

  • dch3, Jobs - это множественное число от Job. Так что Ваше "джобсы" - это "масло масляное". Джобы, тогда уж..
  • Михаил Ливач,
    Принято))
  • Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Андрей PHP Ответ

    Для управления заданиями в очереди Laravel, вы можете столкнуться с некоторыми сложностями, особенно если у вас большое количество задач или если возникают проблемы с выполнением заданий. Вот несколько советов, которые могут помочь вам решить эти проблемы:

    1. Проверьте настройки очереди: Убедитесь, что вы правильно настроили драйвер очереди в файле .env и конфигурационном файле config/queue.php. Например, если вы используете базу данных в качестве драйвера очереди, убедитесь, что ваша база данных доступна и работает исправно.

    2. Увеличьте количество одновременно выполняемых задач: Если у вас много заданий в очереди и они выполняются медленно, попробуйте увеличить количество одновременно выполняемых задач в настройках очереди. Вы можете сделать это, изменив значение опции 'connections' в файле config/queue.php.

    3. Используйте очереди с приоритетами: Если у вас есть задачи с разными приоритетами, вы можете использовать очереди с приоритетами, чтобы управлять порядком выполнения задач. Для этого вам нужно настроить соответствующие очереди в файле config/queue.php и указывать приоритет при добавлении задания в очередь.

    4. Мониторинг и логирование: Для отслеживания выполнения заданий и выявления проблем в работе очереди, рекомендуется включить логирование и использовать инструменты мониторинга, такие как Laravel Horizon или другие инструменты сторонних разработчиков.

    5. Оптимизация кода: Проверьте свой код на наличие узких мест и оптимизируйте его, чтобы задачи выполнялись быстрее. Избегайте выполнения долгих операций внутри задачи и используйте кэширование и другие методы оптимизации.

    Надеюсь, эти советы помогут вам решить проблемы с добавлением заданий в очередь Laravel и улучшить производительность вашего приложения. Если у вас остались дополнительные вопросы, не стесняйтесь задавать их для получения дополнительной помощи.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно