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

Функция dispatch

Функция dispatch применяется для отправки заданий (jobs) в очередь Laravel. Она принимает экземпляр класса задания и возвращает экземпляр класса PendingDispatch, который позволяет дополнительно настраивать параметры отправки, такие как задержка, очередь или соединение. Функция автоматически определяет, должна ли задача быть отправлена в очередь синхронно или асинхронно, в зависимости от того, реализует ли класс задания интерфейс ShouldQueue.

Синтаксис

<?php dispatch($job); ?>

Пример

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

<?php namespace AppJobs; use IlluminateBusQueueable; use IlluminateQueueSerializesModels; use IlluminateQueueInteractsWithQueue; use IlluminateContractsQueueShouldQueue; use IlluminateFoundationBusDispatchable; class SendEmailJob implements ShouldQueue { use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; protected $email; public function __construct($email) { $this->email = $email; } public function handle() { // Отправка письма echo "Sending email to: " . $this->email; } } ?>
<?php namespace AppHttpControllers; use AppJobsSendEmailJob; use IlluminateHttpRequest; class UserController extends Controller { public function sendEmail(Request $request) { $email = $request->input('email'); dispatch(new SendEmailJob($email)); return response()->json(['message' => 'Email sent to queue']); } } ?>

Пример

Давайте отправим задание с задержкой в 10 минут:

<?php namespace AppHttpControllers; use AppJobsProcessOrderJob; use IlluminateHttpRequest; class OrderController extends Controller { public function create(Request $request) { $orderId = $request->input('order_id'); dispatch(new ProcessOrderJob($orderId))->delay(now()->addMinutes(10)); return response()->json(['message' => 'Order processing delayed']); } } ?>

Пример

Давайте отправим задание в определённую очередь:

<?php namespace AppHttpControllers; use AppJobsSendNotificationJob; use IlluminateHttpRequest; class NotificationController extends Controller { public function sendNotification(Request $request) { $userId = $request->input('user_id'); dispatch(new SendNotificationJob($userId))->onQueue('high-priority'); return response()->json(['message' => 'Notification sent to high priority queue']); } } ?>

Пример

Давайте отправим задание с указанием соединения и очереди:

<?php namespace AppHttpControllers; use AppJobsGenerateReportJob; use IlluminateHttpRequest; class ReportController extends Controller { public function generateReport(Request $request) { $reportId = $request->input('report_id'); dispatch(new GenerateReportJob($reportId)) ->onConnection('redis') ->onQueue('reports'); return response()->json(['message' => 'Report generation queued']); } } ?>

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

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