ホームページ >バックエンド開発 >PHPチュートリアル >LaravelフレームワークでのQueue機能の使い方

LaravelフレームワークでのQueue機能の使い方

WBOY
WBOYオリジナル
2023-07-28 21:37:162972ブラウズ

Laravel フレームワークでキュー (Queue) 関数を使用する方法

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

1. キューの設定

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

'connections' => [
    'database' => [
        'driver' => 'database',
        'table' => 'jobs',
        'queue' => 'default',
        'retry_after' => 90,
    ],
],

上記の構成では、driver はキュー ドライバーをデータベース ドライバーとして指定し、table はキュー タスクを保存するためのデータ テーブルの名前を指定します。 queue はデフォルトのキューの名前を指定し、retry_after はタスク実行失敗後の再試行時間を指定します。

2. タスクの定義

Laravel フレームワークでは、キュー タスク (ジョブ) はクラスの形式で定義され、通常は

app/Jobs ディレクトリに保存されます。電子メールを送信するための単純なキュー タスクを作成してみましょう。

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

php artisan make:job SendEmailJob

生成が成功すると、

SendEmailJob# という名前のファイルが app/Jobs# に生成されます。 ## ディレクトリ ## クラス ファイル。このクラス ファイルを開くと、次のコードが表示されます。

namespace AppJobs;

use IlluminateBusQueueable;
use IlluminateContractsQueueShouldQueue;
use IlluminateFoundationBusDispatchable;
use IlluminateQueueInteractsWithQueue;
use IlluminateQueueSerializesModels;

class SendEmailJob implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    public function __construct()
    {
        //
    }

    public function handle()
    {
        // 发送邮件的逻辑代码
    }
}
このクラスでは、電子メールを送信するためのロジック コードを定義できます。キュータスクは非同期で実行されるため、ShouldQueue

インターフェースをクラスとして実装する必要があることに注意してください。同時に、他の特性

DispatchableInteractsWithQueueQueueableSerializesModels は、キュー操作とオブジェクトのシリアル化のサポートを提供します。 3. タスクのエンキュー

Laravel フレームワークでは、タスクのエンキューは通常、

dispatch

関数を呼び出すことによって実装されます。以下は、

SendEmailJob タスクをキューに入れるサンプル コードです。

use AppJobsSendEmailJob;

dispatch(new SendEmailJob());
上記のコードは、SendEmailJob

タスクをデフォルト キューに追加します。キュー名を指定する必要がある場合は、

onQueue メソッドを使用できます。

use AppJobsSendEmailJob;

dispatch((new SendEmailJob())->onQueue('emails'));
さらに、タスクを遅延させたい場合は、lay# メソッドを使用できます。 ## メソッド:

use AppJobsSendEmailJob;

$job = (new SendEmailJob())->delay(Carbon::now()->addMinutes(10));

dispatch($job);

4. キュータスクの実行Laravel フレームワークでは、同期実行と非同期実行の 2 つのメソッドを使用してキュータスクを実行できます。

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

    同期実行とは、タスクがキュー ドライバーによって処理されずに、現在のリクエスト内で直ちに実行されることを意味します。構成ファイル
  1. config/queue.php
  2. で、デフォルトのキュードライバーを「sync」に設定します。
'default' => env('QUEUE_DRIVER', 'sync'),

現時点では、dispatch 関数を呼び出してタスクをキューに追加した後、タスクは現在のリクエストですぐに実行されます。

非同期実行

    非同期実行とは、タスクがキュー ドライバーによって処理および実行されることを意味します。構成ファイル
  1. config/queue.php
  2. で、デフォルトのキュー ドライブを「データベース」などの別のドライブに設定します。
'default' => env('QUEUE_DRIVER', 'database'),

次に、ターミナルで次のコマンドを実行してキュー タスクを監視および実行します。 <pre class='brush:php;toolbar:false;'>php artisan queue:work</pre>この時点では、

dispatch を呼び出してタスクがキューに追加された後、

関数を使用すると、タスクがキューに追加され、

queue:work

コマンドによって監視および実行されます。 概要: 上記の手順を通じて、Laravel フレームワークのキュー関数を使用することができ、電子メールを送信するタスクを例として、対応するコード例を示します。キュー機能により、バックグラウンド タスクの処理が向上し、システムの同時実行性と応答速度が向上します。実際の開発では、他の機能やサードパーティのサービスと組み合わせて、より強力な機能を実現することもできます。この記事が、読者が Laravel フレームワークのキュー機能を理解し、適用するのに役立つことを願っています。

以上がLaravelフレームワークでのQueue機能の使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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