>PHP 프레임워크 >Laravel >Laravel 프로젝트에서 작업(Jobs)을 조정하는 방법 살펴보기

Laravel 프로젝트에서 작업(Jobs)을 조정하는 방법 살펴보기

PHPz
PHPz원래의
2023-04-14 09:33:511344검색

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 文件中:

&#39;connections&#39; => [
    // ...
    '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 队列驱动程序,并将队列命名为 defaultrrreee

위 코드에서는 ProcessPodcast라는 작업 클래스를 생성했습니다. >ShouldQueue 인터페이스는 대기열에서 처리되어야 하는 작업임을 나타냅니다. 이 클래스는 또한 Laravel의 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.