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
ファイルに追加します。
'connections' => [ // ... '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 サイトの他の関連記事を参照してください。