ホームページ  >  記事  >  PHPフレームワーク  >  Laravel プロジェクトでタスク (ジョブ) を調整する方法を調べる

Laravel プロジェクトでタスク (ジョブ) を調整する方法を調べる

PHPz
PHPzオリジナル
2023-04-14 09:33:511320ブラウズ

Laravel では、タスク (ジョブ) は非同期タスクを処理するためのメカニズムです。 Laravel は、バックグラウンドで非同期に実行するタスク (ジョブ) を簡単に設定できる幅広いタスク (ジョブ) 処理関数を提供し、アプリケーションがリクエストに迅速に応答し、タスクを効率的に処理できるようにします。

この記事では、Laravel アプリケーションでタスク (ジョブ) を調整する方法について説明します。これには、タスク (ジョブ) を定義する方法、タスク (ジョブ) を構成、使用、管理する方法が含まれます。

タスク (ジョブ) を定義する

Laravel でタスク (ジョブ) を定義するのは非常に簡単です。まず、新しいタスク (Jobs) クラスを作成し、そのタスクを処理するためのコードを 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 Task クラスというクラスを作成しました。これは ShouldQueue インターフェイスから継承し、これがキュー内で処理する必要があるタスクであることを示します。このクラスは、Laravel の Dispatchable 特性も使用します。これにより、dispatch メソッドを使用してタスクを Laravel のキュー システムにプッシュできます。

handle() メソッドに加えて、Jobs クラスは、before() など、Laravel が提供する他のメソッドや関数も使用できます。 after () メソッド。タスク (ジョブ) の開始時と終了時に特定の操作をトリガーするために使用されます。さらに、キュー コネクタを使用して、さまざまなキューやキュー サービスに接続できます。

キュードライバーの構成

Laravel は、タスク (ジョブ) キューの管理と実行にさまざまなキュードライバーを使用することをサポートしています。デフォルトでは、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 という名前を付け、再試行間隔や最大ブロック時間などのキューのプロパティを設定します。

タスク (ジョブ) をキューにプッシュする

タスク (ジョブ) を定義したら、dispatch() メソッドを使用して次のことを行うことができます。タスクをプッシュする Laravel のキューシステムにプッシュします。例:

ProcessPodcast::dispatch($podcast);

上記のコードでは、$podcast 変数をパラメーターとして Jobs クラスのコンストラクターに渡し、dispatch() を使用します。メソッドはタスクをキューにプッシュします。

ジョブ (Jobs) をキューにプッシュすると、Laravel はジョブ (Jobs) クラス、コンストラクターパラメーター、およびその他の必要なデータを文字列にシリアル化します。その後、文字列はキューに送信され、最終的にはバックグラウンドで非同期に実行するために取り出されます。

キューのリッスンとデバッグ

ジョブ (ジョブ) をキューにプッシュしたら、Laravel のキュー リスナー (キュー リスナー) を使用してキューをリッスンできます。およびプロセスタスク。コマンド ラインから、php Artisan queue:listen コマンドを使用してキュー リスナーを開始できます。例:

php artisan queue:listen redis --queue=default

上記の例では、redis キュー ドライバーを使用し、キューに default という名前を付けます。このコマンドは、キュー内のタスクを待機するリスナーを開始します。このリスナーは、ジョブをキューから削除し、ジョブが利用可能になったら実行する役割を果たします。

Laravel アプリケーションのキュー スケジューラ (キュー スケジューラ) を使用して、計画どおりにタスクを実行することもできます。キュースケジューラは、指定した時間内にタスクを自動的に実行する仕組みです。キュー スケジューラをインストールするには、アプリケーションのスケジューラ (Scheduler) で実行するジョブ (ジョブ) を定義し、それをキュー システムで使用する必要があります。構成が完了すると、キュー スケジューラは、指定された時間間隔内でジョブ (ジョブ) を自動的にキューにプッシュします。

概要

Laravel アプリケーションでのジョブ (ジョブ) の構成と管理は、比較的シンプルで実用的なメカニズムです。この記事では、タスク (ジョブ) を定義し、キュー ドライバーを構成し、キュー リスナーとキュー スケジューラーを使用してタスクを処理する方法について説明します。 Laravel のジョブ処理機能を使用すると、アプリケーションにバックグラウンドでタスクを処理させ、より高いパフォーマンスとより良いユーザー エクスペリエンスを実現できます。

以上がLaravel プロジェクトでタスク (ジョブ) を調整する方法を調べるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。