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

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

WBOY
リリース: 2023-07-28 22:48:01
オリジナル
2972 人が閲覧しました

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'),
ログイン後にコピー

次に、ターミナルで次のコマンドを実行してキュー タスクを監視および実行します。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>php artisan queue:work</pre><div class="contentsignin">ログイン後にコピー</div></div>この時点では、dispatch を呼び出してタスクがキューに追加された後、 <p> 関数を使用すると、タスクがキューに追加され、</p>queue:work<p> コマンドによって監視および実行されます。 <code>概要: 上記の手順を通じて、Laravel フレームワークのキュー関数を使用することができ、電子メールを送信するタスクを例として、対応するコード例を示します。キュー機能により、バックグラウンド タスクの処理が向上し、システムの同時実行性と応答速度が向上します。実際の開発では、他の機能やサードパーティのサービスと組み合わせて、より強力な機能を実現することもできます。この記事が、読者が Laravel フレームワークのキュー機能を理解し、適用するのに役立つことを願っています。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート