Введение
Laravel — это популярная среда веб-приложений PHP, которая упрощает процесс создания современных и масштабируемых веб-приложений. Одной из основных особенностей Laravel является возможность управлять фоновыми заданиями через систему очередей. Обработчики очередей Laravel предназначены для асинхронной обработки заданий в очереди в фоновом режиме, что может значительно повысить производительность и скорость отклика вашего веб-приложения.
Laravel Queue Worker — это компонент PHP-фреймворка Laravel, который позволяет вам асинхронно выполнять задания в вашем приложении.
Задания — это задачи, для выполнения которых требуется время, и они могут выполняться независимо от остального приложения. Эти задания могут быть, например, отправкой электронных писем, обработкой изображений, созданием отчетов и т. д.
Laravel Queue Worker позволяет помещать эти задания в очередь и запускать их асинхронно, в фоновом режиме, не блокируя выполнение остальной части приложения. Таким образом, приложение может продолжать нормально работать даже во время выполнения фоновых заданий.
Laravel Queue Worker отвечает за управление очередью заданий и выполнение самих заданий. Он работает как отдельный процесс от остальной части приложения и может быть настроен для одновременного запуска нескольких процессов для обработки большого объема работы.
Laravel Queue Worker поддерживает несколько драйверов очередей, таких как база данных, Redis, Amazon SQS и другие. Это позволяет легко интегрировать систему очередей Laravel с различными внешними службами очередей.
Таким образом, Laravel Queue Worker — это фундаментальный компонент для асинхронной обработки заданий в Laravel, который позволяет повысить производительность и масштабируемость веб-приложений, использующих этот фреймворк.
Предпосылки
Прежде чем начать, убедитесь, что ваш сервер соответствует следующим требованиям:
- Операционная система на базе Linux
- PHP версии 7.2 или выше
- Установленный и настроенный фреймворк Laravel
- Система инициализации Systemd установлена и настроена
Создайте службу Systemd
Первым шагом к запуску обработчиков очередей Laravel с Systemd является создание служебного файла Systemd. Этот файл будет определять поведение рабочего процесса в очереди и то, как его следует запускать, останавливать и перезапускать.
Создайте новый файл в каталоге «/etc/systemd/system/» с расширением.service, например , «laravel-worker.service».
sudo nano /etc/systemd/system/laravel-worker.service
Добавьте в файл следующее содержимое:
[Unit]
Description=Laravel Queue Worker
After=network.target
[Service]
User=www-data
Group=www-data
Restart=always
WorkingDirectory=/path/to/your/laravel
ExecStart=/usr/bin/php artisan queue:work --sleep=3 --tries=3
[Install]
WantedBy=multi-user.target
Замените «/path/to/your/laravel» каталогом вашего приложения Laravel. Также установите свою команду мастера в опциях «ExecStart».
Давайте проанализируем этот файл и значение каждого раздела:
- Единица: в этом разделе определяется единица обслуживания и приводится краткое описание того, что она делает. Параметр After указывает, что служба должна запускаться после достижения пункта назначения в сети.
- Служба: в этом разделе приведены сведения о том, как запустить службу. Параметры User и Group указывают пользователя и группу, под которыми должна работать служба. Параметр «Перезапуск» указывает, что сервис должен быть перезапущен в случае выключения или сбоя. Параметр ExecStart указывает команду, которую необходимо выполнить для запуска оператора очереди. В этом случае мы используем двоичный файл php для запуска команды queue:work с параметрами
--sleep=3
и--tries=3
. Эти параметры указывают, что рабочий процесс в очереди должен бездействовать в течение 3 секунд между каждым заданием и должен повторять невыполненные задания до 3 раз, прежде чем пометить их как неудачные. - Установка: в этом разделе указываются уровни запуска, на которых должна быть включена служба. Параметр WantedBy указывает, что служба должна быть включена в многопользовательской цели, которая является целью по умолчанию для большинства дистрибутивов Linux.
Сохраните файл и выйдите из редактора.
Включить службу
Сначала выполните следующую команду, чтобы перезагрузить службу демона systemd. Вы должны запускать эту команду каждый раз, когда вносите изменения в файл службы.
sudo systemctl daemon-reload
Чтобы убедиться, что работник очереди Laravel запускается автоматически при запуске сервера, мы можем включить службу с помощью следующей команды:
sudo systemctl enable laravel-worker
Эта команда создаст символическую ссылку в соответствующем каталоге для автоматического запуска службы при загрузке.
Запустить службу
Теперь, когда мы создали и активировали файл службы Systemd, мы можем запустить службу с помощью следующей команды:
sudo systemctl start laravel-worker
Эта команда запустит обработчик очереди Laravel как службу Systemd. Вы можете убедиться, что сервис работает правильно, проверив его статус:
sudo systemctl status laravel-worker
Эта команда отобразит информацию о службе, включая ее текущий статус и все последние записи реестра.
Проверить сервис
Когда служба запущена, вы можете управлять ею с помощью стандартных команд Systemd. Вот несколько распространенных команд, которые вы можете использовать для управления рабочим сервисом Laravel с очередями:
sudo systemctl stop laravel-worker
: эта команда остановит службу.sudo systemctl restart laravel-worker
: эта команда перезапустит службу.sudo systemctl disable laravel-worker
: эта команда отключит автоматический запуск службы при загрузке.sudo systemctl status laravel-worker
: эта команда отобразит статус службы, включая то, запущена она или остановлена, а также любые последние записи в реестре.
Заключение
Запуск воркеров в очереди Laravel с помощью Systemd — отличный способ убедиться, что фоновые процессы всегда работают гладко и эффективно в производственных средах. Создав файл службы Systemd и разрешив его запуск, вы можете автоматизировать процесс запуска и остановки обработчика очереди, упрощая управление и контроль.
В этой статье мы рассмотрели основные шаги по созданию файла службы Systemd для обработчика очереди Laravel, запуску службы, включению ее запуска и управлению ею с помощью команд Systemd. Обладая этими знаниями, вы сможете с легкостью уверенно управлять и масштабировать свои приложения Laravel.