現在の位置: ホーム> 最新記事一覧> Laravelキュー機能ユーザーガイド:タスクの構成、定義、実行

Laravelキュー機能ユーザーガイド:タスクの構成、定義、実行

M66 2025-07-02

導入

キューは、ウェブ開発において重要な役割を果たす一般的な非同期処理メカニズムです。 Laravelフレームワークは、電子メールの送信、レポートの生成、ビッグデータの処理など、さまざまなバックグラウンドタスクを簡単に処理できる強力なキューイング機能を提供します。この記事では、キューの構成、タスクの定義、実行など、Laravelフレームワークでキュー関数を使用する方法を詳細に紹介し、対応するコードの例を示します。

キューを構成します

Laravelフレームワークでは、キューの構成は非常に簡単です。まず、構成ファイルconfig/queue.phpを開き、キュードライブと対応する接続​​パラメーターを設定します。 Laravelは、データベース、Redis、Beanstalkdなどのさまざまなキュードライブをサポートしています。次の例は、データベースドライブを例として使用して説明します。

 <span class="fun">&#39;connections&#39; => [&#39;database&#39; => [&#39;driver&#39; => &#39;database&#39;、 &#39;table&#39; => &#39;jobs&#39;、 &#39;queue&#39; => &#39;default&#39;、 &#39;retry_after&#39; => 90、]、]、</span>

上記の構成では、ドライバーはキュードライバーがデータベースドライバーであることを指定し、テーブルはキュータスクのデータテーブル名を指定し、キューはデフォルトキューの名前を指定し、タスクの実行後にretry_afterの設定を指定します。

タスクを定義します

Laravelフレームワークでは、キュータスク(ジョブ)がクラスで定義され、通常はアプリ/ジョブディレクトリに保存されます。メールを送信するためのシンプルなキュータスクを作成します。

まず、職人コマンドを使用して、キュータスクテンプレートを生成します。

 <span class="fun">PHP Artisan Make:Job SendeMailJob</span>

生成が成功した後、sendemailjobという名前のクラスファイルがApp/Jobsディレクトリで生成されます。このファイルを開くと、コードは次のとおりです。

<span class="fun">名前空間appjobs; IlluminateBusqueuableを使用してください。 illuminaTecontractsqueueshouldqueueを使用します。 IlluminateFoundationBusdispatchableを使用します。 IlluminateQueueInteractswithqueueを使用します。 IlluminateQueuesearializemodelsを使用します。 class sendemailjobの実装は{dispatchable、interactswithqueue、queuable、serializemodelsを使用します。 public function __construct(){} public function handle(){//電子メールを送信するための論理コード}}}</span>

このクラスでは、電子メールを送信するための論理コードを定義できます。キュータスクは非同期に実行されるため、インターフェイスをクラスとして実装する必要があることに注意してください。同時に、その他の機能(特性)発送可能、操作スイスクエー、Queueable、およびSerializesModelsは、キュー操作とオブジェクトシリアル化をサポートします。

タスク参加

Laravelフレームワークでは、ディスパッチ関数を呼び出すことにより、タスクエンキューが達成されます。以下は、sendemailjobタスクをエンキューするためのサンプルコードです。

 <span class="fun">appjobssendemailjobを使用します。ディスパッチ(new sendemailjob());</span>

上記のコードは、sendemailjobタスクをデフォルトキューに追加します。キュー名を指定する場合は、Onqueueメソッドを使用できます。

 <span class="fun">appjobssendemailjobを使用します。ディスパッチ((new sendemailjob()) - > onqueue( &#39;emails&#39;));</span>

タスクを遅延させる場合は、遅延方法を使用できます。

 <span class="fun">appjobssendemailjobを使用します。 $ job =(new sendemailjob()) - > delay(carbon :: now() - > addminutes(10));ディスパッチ($ job);</span>

キュータスクを実行します

Laravelフレームワークでは、キュータスクを同期実行と非同期実行の2つの方法で実行できます。

同期実行(同期ドライバー)

同期実行とは、キュードライバーによって処理されることなく、現在のリクエストですぐに実行されるタスクを指します。 configuration file config/queue.phpにデフォルトのキュードライブを「sync」に設定するだけです。

 <span class="fun">&#39;default&#39; => env( &#39;queue_driver&#39;、 &#39;sync&#39;)、</span>

この時点で、タスクは現在のリクエストですぐに実行されます。

非同期実行

非同期実行とは、キュードライバーによって処理および実行されているタスクを指します。 config/queue.phpでは、デフォルトのキュードライブを「データベース」などの別のドライブに設定できます。

 <span class="fun">&#39;default&#39; => env( &#39;queue_driver&#39;、 &#39;database&#39;)、</span>

次に、次のコマンドを使用して、キュータスクを聞いて実行します。

 <span class="fun">PHP職人のキュー:仕事</span>

この時点で、タスクがキューに追加され、Queue:Work Commandによって聞き、実行されます。

要約します

上記の手順を通じて、Laravelフレームワークにキュー関数を実装し、対応するコードの例を例として送信するタスクを提供できます。キュー機能は、開発者がバックグラウンドタスクの処理を改善し、システムの並行性と応答速度を改善するのに役立ちます。実際の開発では、他の機能とサードパーティサービスを組み合わせて、より効率的な機能を実現することもできます。 Laravelフレームワークを使用するとき、この記事が役立つことを願っています。