РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1373 of 1392 menu

Метод onQueue

Метод onQueue применяется к объекту PendingDispatch, который возвращается при вызове функции dispatch. С помощью этого метода можно указать имя очереди для выполнения задания. Первым и единственным параметром передаётся строка - имя очереди. Если метод не вызван, задание будет помещено в очередь по умолчанию, указанную в конфигурационном файле queue.php.

Синтаксис

<?php dispatch(new Job())->onQueue($queueName); ?>

Пример

Давайте создадим простое задание и отправим его в очередь с именем 'high':

<?php namespace AppJobs; use IlluminateBusQueueable; use IlluminateQueueInteractsWithQueue; use IlluminateQueueSerializesModels; class SendEmailJob implements ShouldQueue { use InteractsWithQueue, Queueable, SerializesModels; protected $userEmail; public function __construct($userEmail) { $this->userEmail = $userEmail; } public function handle() { // отправка email } } ?>
<?php namespace AppHttpControllers; use AppJobsSendEmailJob; class UserController extends Controller { public function sendEmail() { $email = 'user@example.com'; dispatch(new SendEmailJob($email))->onQueue('high'); } } ?>

Пример

Отправим задание в очередь с именем 'low' для фоновой обработки:

<?php namespace AppJobs; use IlluminateBusQueueable; use IlluminateQueueInteractsWithQueue; use IlluminateQueueSerializesModels; class ProcessDataJob implements ShouldQueue { use InteractsWithQueue, Queueable, SerializesModels; protected $data; public function __construct($data) { $this->data = $data; } public function handle() { // обработка данных } } ?>
<?php namespace AppConsoleCommands; use AppJobsProcessDataJob; class ProcessCommand extends Command { public function handle() { $data = ['a', 'b', 'c', 'd', 'e']; dispatch(new ProcessDataJob($data))->onQueue('low'); echo "Job dispatched to low queue"; } } ?>

Результат выполнения кода:

"Job dispatched to low queue"

Пример

Используем метод onQueue вместе с другими методами настройки задания, такими как delay:

<?php namespace AppJobs; use IlluminateBusQueueable; use IlluminateQueueInteractsWithQueue; use IlluminateQueueSerializesModels; class ReportJob implements ShouldQueue { use InteractsWithQueue, Queueable, SerializesModels; public function handle() { // генерация отчёта } } ?>
<?php namespace AppHttpControllers; use AppJobsReportJob; class ReportController extends Controller { public function generate() { dispatch(new ReportJob()) ->onQueue('reports') ->delay(now()->addMinutes(10)); } } ?>

Смотрите также

  • метод delay,
    который устанавливает задержку перед выполнением задания
  • метод onConnection,
    который указывает соединение для очереди
  • функция dispatch,
    которая отправляет задание в очередь
  • функция dispatchSync,
    которая выполняет задание синхронно
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить