Черги Laravel

Черга (queue) - це якийсь пул Завдання реалізовано за принципом FIFO - "першим прийшов - першим пішов".

Завдання (job) – це цілісний елемент черги. (Черга може бути порожньою або складатися з однієї і більше завдань)

Воркер (worker) - це програма, яка прослуховує Чергу і виконує Завдання.

Створюємо файл міграції таблиці jobs

jobs - це таблиця Завдання, які можна групувати по Чергах (поле queue)

php artisan queue:table

Створюємо файл міграції до таблиці failed_jobs

php artisan queue:failed-table

Створюємо перші Job's

php artisan make:job BlogPostAfterCreateJob
php artisan make:job BlogPostAfterDeleteJob
php artisan make:job ProcessVideoJob

У файлі налаштувань .env встановлюємо QUEUE_CONNECTION=database

Додаткові налаштування виконуємо в config/queue.php

Додаємо завдання в чергу

$job = new BlogPostAfterCreateJob($item); 
$this->dispatch($job); // У чергу (Якщо є implements ShouldQueue, то Job буде поміщений в чергу інакше в будь-якому випадку виконатися відразу) 
 
$this->dispatchNow($job); // Виконуємо відразу
 

 
 
BlogPostAfterDeleteJob::dispatch($id)->delay(20);
 
BlogPostAfterDeleteJob::dispatchNow($id);
 
 

 
 
dispatch(new BlogPostAfterDeleteJob($id));
dispatch_now(new BlogPostAfterDeleteJob($id));

Запуск черги (На сервері запуск через супервізер)

php artisan queue:work
 
// Запуск процес обробки завдань черги як демон

// Всі зміни, зроблені в коді після запуску, прийняті не будуть.
// Тобто після апдейту коду буде потрібно перезапуск команди
 

 
 
php artisan queue:work --queue=queuName1,queueName2
 
//Спочатку виконує всі завдання з черги queuName1, потім queuName2
 

 
 
php artisan queue:listen
 
// Запускає процес обробки завдань зазначеної черги.
 
// Зміни, зроблені в коді після запуску, будуть прийняті
 
// Гірше за продуктивністю порівняно з "queue:work"
 

 
 

 
 
php artisan queue:restart
 
// М'який перезапуск демона queue:work після того як завершить завдання, що виконується.
 

 
 
php artisan queue:failed
 
// Перегляд таблиці провалення задач
 

 
 
php artisan queue:retry all
 
// Повернення у чергу виконання всіх провалених завдань
 

 
 
php artisan queue:retry 5
 
// Повернення проваленого завдання (id=5) у чергу виконання
2015-2026 © SumyNikNet