Может войдёшь?
Черновики Написать статью Профиль

«Queue»

Как начать работать с очередями в Laravel

queue Laravel 6

Введение

Очереди (queues) это одна из сильных сторон фреймворка. Хотя они реализованы так, чтобы любой ремесленник смог их осилить, всё же некоторый порог для входа есть и моя цель помочь вам его преодолеть.

Закончив читать эту статью вы научитесь:

  • Использовать очереди для того чтобы быстро выполнять http-запросы.

  • Запускать обработку очереди с минимальными (нулевыми) дополнительными требованиями к серверу.

  • Обеспечить постоянную работу очереди.

Здесь будет рассмотрен только самый минималистический вариант организации очередей: через драйвер database. Будем считать, что это local или staging окружение, на котором не ожидается больших нагрузок. Хотя, если честно, большинство "рабочих" окружений также нельзя назвать highload :)…

AlexanderSamara

Спасибо за наводку в статье! Тоже изучаю сейчас этот вопрос. Оптимальное решение на мой взгляд:

В Crontab должна быть одна единственная запись:

 * * * * php /path/to/artisan schedule:run >>/dev/null 2>&1

Все остальные команды должны запускаться уже в методе schedule класса Kernel.

$schedule->command('queue:work --once')->withoutOverlapping()->everyMinute();

или

$schedule->command('queue:work --stop-when-empty')->withoutOverlapping()->everyMinute();

4. Эта музыка будет вечной, если я заменю батарейки

Вы наверное заметили, что команда php artisan queue:work не закончилась после того как все задания в очереди выполнились. Она ждёт новых заданий! Вы можете прервать выполнение нажав Ctrl+C.

Обратите внимание на метод withoutOverlapping(). Это защита от наложения задач.

← Назад | Дальше → Движется на Habravel