Основы очередей и драйверы
Разберитесь в асинхронной обработке и настройте драйверы очередей database или Redis
«Основы очередей и драйверы» — бесплатный урок PHP Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения PHP Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс PHP Academy содержит 4 уроков всего.
Что такое очереди?
Очереди позволяют отложить медленные или ресурсоёмкие задачи (отправку электронных писем, изменение размера изображений, обращение к внешним API) для выполнения фоновыми рабочими процессами, сохраняя быстроту HTTP-ответов.
Архитектура очередей
Основной процесс (веб-сервер) помещает задания в очередь. Отдельные рабочие процессы извлекают задания и асинхронно выполняют их.
Доступные драйверы очередей
Laravel поддерживает несколько серверных систем очередей:
database— задания хранятся в базе данных (подходит для начала работы)redis— быстрое решение, готовое к использованию в рабочей средеsqs— AWS Simple Queue Servicebeanstalkd— быстрый и лёгкий вариантsync— выполняет задания немедленно (для локальной разработки)
Настройка драйвера очереди
Укажите драйвер в .env.
# .env
QUEUE_CONNECTION=redis
REDIS_HOST=127.0.0.1
REDIS_PORT=6379Настройка драйвера database
При использовании драйвера database создайте таблицу заданий.
$ php artisan queue:table
$ php artisan migrateЗапуск рабочего процесса очереди
Рабочий процесс извлекает задания из очереди и выполняет их.
$ php artisan queue:work
# Or specify connection and queue:
$ php artisan queue:work redis --queue=emails,defaultqueue:listen и queue:work
queue:work загружает приложение один раз и обрабатывает задания в памяти — это быстрее, но после изменений кода требуется перезапуск рабочего процесса. queue:listen перезагружает приложение для каждого задания — это удобнее при разработке.
Неудачные задания
Если задание не удаётся выполнить после всех повторных попыток, оно сохраняется в таблице failed_jobs. Просматривайте такие задания и запускайте их повторно с помощью Artisan.
$ php artisan queue:failed
$ php artisan queue:retry all
$ php artisan queue:flushПриоритеты очередей
Определите несколько именованных очередей и назначьте приоритеты при запуске рабочего процесса.
$ php artisan queue:work --queue=high,default,low
# Worker checks high first, then default, then lowПанель мониторинга Horizon
Для очередей Redis Laravel Horizon предоставляет красивую панель мониторинга в реальном времени с информацией о пропускной способности, неудачных заданиях и статистике рабочих процессов.
Выбор драйвера
Используйте sync локально, database для небольших проектов и redis для масштабирования в рабочей среде. Не используйте SQS, если вы уже не работаете в AWS и вам не требуется практически неограниченное масштабирование.
Итоги
Очереди передают медленные задачи фоновым рабочим процессам. Настройте драйвер в .env, создавайте задания с помощью Artisan и запускайте рабочие процессы через queue:work. Отслеживайте неудачные задания в таблице failed_jobs.
Быстрая проверка
Какой драйвер очереди выполняет задания немедленно в том же процессе?
Часто задаваемые вопросы
Урок «Основы очередей и драйверы» бесплатный?
Да — полный текст урока «Основы очередей и драйверы» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс PHP Academy, подпишись на CoddyKit PRO. Курс PHP Academy содержит 4 уроков всего.
Чему я научусь в уроке «Основы очередей и драйверы»?
Разберитесь в асинхронной обработке и настройте драйверы очередей database или Redis Ты практикуешь PHP Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать PHP Academy?
Предыдущий опыт не требуется. PHP Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Основы очередей и драйверы»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке PHP Academy?
Да. Каждый урок PHP Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Основы очередей и драйверы
- Создание и отправка заданий
- Повторные попытки, задержки и цепочки заданий
- Мониторинг очередей с Laravel Horizon