Laravel에서 작업(Jobs)은 비동기 작업을 처리하기 위한 메커니즘입니다. Laravel은 백그라운드에서 비동기적으로 실행되도록 작업(Jobs)을 쉽게 설정할 수 있는 광범위한 작업(Job) 처리 기능을 제공하여 애플리케이션이 요청에 신속하게 응답하고 작업을 효율적으로 처리할 수 있도록 합니다.
이 글에서는 작업(Jobs)을 정의하는 방법과 작업(Jobs)을 구성, 사용 및 관리하는 방법을 포함하여 Laravel 애플리케이션에서 작업(Jobs)을 조정하는 방법을 살펴보겠습니다.
작업(Jobs) 정의
Laravel에서 작업(Jobs)을 정의하는 것은 매우 간단합니다. 먼저 새 작업(Jobs) 클래스를 생성하고 handle
메서드에 작업 처리 코드를 배치합니다. handle
方法中:
<?php namespace App\Jobs; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; class ProcessPodcast implements ShouldQueue { use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; public function handle() { // 处理任务的代码 } }
上面的代码中,我们创建了一个名为 ProcessPodcast 的任务类,它继承自 ShouldQueue
接口,表明这是一个需要在队列中处理的任务。该类还使用了 Laravel 的 Dispatchable
trait,该 trait 可以让我们使用 dispatch
方法将任务推送到 Laravel 的队列系统中。
除了 handle()
方法外,任务(Jobs)类还可以使用 Laravel 提供的其他方法和功能,例如 before()
和 after()
方法,用于在任务(Jobs)开始和结束时触发某些操作。此外,您还可以使用队列连接器(Queue Connectors)来连接不同的队列和队列服务。
配置队列驱动程序
Laravel支持使用不同的队列驱动程序来管理和运行任务(Jobs)队列。默认情况下,Laravel使用 sync
驱动程序,它会同步执行任务,并在任务完成后返回结果。
要配置队列驱动程序,您需要在 Laravel 的配置文件 config/queue.php
中定义您想要使用的驱动程序。例如,为了使用 Redis 驱动程序,您可以将以下代码添加到 config/queue.php
文件中:
'connections' => [ // ... 'redis' => [ 'driver' => 'redis', 'connection' => 'default', 'queue' => env('REDIS_QUEUE', 'default'), 'retry_after' => 90, 'block_for' => null, ], // ... ],
上面的代码中,我们将 Redis 队列驱动程序配置为使用默认连接,将队列命名为 default
,并设置了队列的一些属性,例如重试间隔和最大阻塞时间。
推送任务(Jobs)到队列
一旦您定义了一个任务(Jobs),就可以使用 dispatch()
方法将任务推送到 Laravel 的队列系统中。例如:
ProcessPodcast::dispatch($podcast);
在上面的代码中,我们将 $podcast
变量作为参数传递给任务(Jobs)类的构造函数,然后使用 dispatch()
方法将任务推送到队列中。
当您推送任务(Jobs)到队列中时,Laravel会将任务(Jobs)的类、构造函数参数以及任何其他必需的数据序列化为一个字符串。然后,该字符串将被发送到队列,并最终被取出,用于在后台异步地执行任务。
监听和调试队列
一旦您将任务(Jobs)推送到队列中,就可以使用 Laravel 的队列监听器(Queue Listener)来监听队列并处理任务。在命令行中,您可以使用 php artisan queue:listen
命令启动队列监听器。例如:
php artisan queue:listen redis --queue=default
在上面的例子中,我们使用 redis
队列驱动程序,并将队列命名为 default
rrreee
Dispatchable
특성을 사용하는데, 이를 통해 dispatch
메서드를 사용하여 Laravel의 대기열 시스템에 작업을 푸시할 수 있습니다.
handle()
메서드 외에도 Jobs 클래스는 before()
및 after(와 같이 Laravel에서 제공하는 다른 메서드와 함수를 사용할 수도 있습니다. )
작업(작업)이 시작되고 종료될 때 특정 작업을 트리거하는 데 사용되는 메서드입니다. 또한 대기열 커넥터를 사용하여 다양한 대기열과 대기열 서비스를 연결할 수 있습니다. 큐 드라이버 구성
Laravel은 작업(Jobs) 큐를 관리하고 실행하기 위해 다양한 큐 드라이버를 사용하는 것을 지원합니다. 기본적으로 Laravel은 작업을 동기적으로 실행하고 작업이 완료되면 결과를 반환하는sync
드라이버를 사용합니다. 🎜🎜큐 드라이버를 구성하려면 Laravel의 구성 파일 config/queue.php
에서 사용하려는 드라이버를 정의해야 합니다. 예를 들어 Redis 드라이버를 사용하려면 config/queue.php
파일에 다음 코드를 추가하면 됩니다. 🎜rrreee🎜위 코드에서는 Redis 큐 드라이버가 기본 연결, 대기열 이름을 default
로 지정하고 재시도 간격 및 최대 차단 시간과 같은 대기열의 일부 속성을 설정합니다. 🎜🎜🎜작업을 대기열에 푸시🎜🎜🎜작업을 정의한 후에는 dispatch()
메서드를 사용하여 해당 작업을 Laravel의 대기열 시스템에 푸시할 수 있습니다. 예: 🎜rrreee🎜위 코드에서는 $podcast
변수를 Jobs 클래스 생성자에 매개변수로 전달한 다음 dispatch()
메서드를 사용합니다. 작업이 대기열로 푸시됩니다. 🎜🎜작업을 대기열에 푸시하면 Laravel은 작업의 클래스, 생성자 매개변수 및 기타 필수 데이터를 문자열로 직렬화합니다. 그런 다음 문자열은 대기열로 전송되고 결국 백그라운드에서 비동기적으로 실행되도록 제거됩니다. 🎜🎜🎜큐 수신 및 디버깅🎜🎜🎜작업(Jobs)을 대기열에 푸시하면 Laravel의 대기열 리스너(Queue Listener)를 사용하여 대기열을 수신하고 작업을 처리할 수 있습니다. 명령줄에서 php artisan queue:listen
명령을 사용하여 큐 리스너를 시작할 수 있습니다. 예: 🎜rrreee🎜위의 예에서는 redis
대기열 드라이버를 사용하고 대기열 이름을 default
로 지정했습니다. 이 명령은 대기열에서 작업을 기다리는 리스너를 시작합니다. 이 리스너는 대기열에서 작업을 제거하고 작업을 사용할 수 있게 되면 실행하는 역할을 담당합니다. 🎜🎜Laravel 애플리케이션의 대기열 스케줄러를 사용하여 예약된 대로 작업을 실행할 수도 있습니다. 큐 스케줄러는 지정된 시간 내에 작업을 자동으로 실행하는 메커니즘입니다. 큐 스케줄러를 설치하려면 애플리케이션의 스케줄러(Scheduler)에서 실행하려는 작업(Jobs)을 정의하고 이를 큐 시스템과 함께 사용해야 합니다. 일단 구성되면 대기열 스케줄러는 지정된 시간 간격 내에 작업(작업)을 대기열에 자동으로 푸시합니다. 🎜🎜🎜요약🎜🎜🎜Laravel 애플리케이션에서 작업(Jobs)을 구성하고 관리하는 것은 비교적 간단하고 실용적인 메커니즘입니다. 이 문서에서는 작업(작업)을 정의하고, 큐 드라이버를 구성하고, 큐 수신기 및 큐 스케줄러를 사용하여 작업을 처리하는 방법을 설명합니다. Laravel의 작업 처리 기능을 사용하면 애플리케이션이 백그라운드에서 작업을 처리하고 더 높은 성능과 더 나은 사용자 경험을 달성할 수 있습니다. 🎜위 내용은 Laravel 프로젝트에서 작업(Jobs)을 조정하는 방법 살펴보기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!