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 はタスク実行失敗後の再試行時間を指定します。
app/Jobs ディレクトリに保存されます。電子メールを送信するための単純なキュー タスクを作成してみましょう。
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 インターフェースをクラスとして実装する必要があることに注意してください。同時に、他の特性 Dispatchable、
InteractsWithQueue、
Queueable、
SerializesModels は、キュー操作とオブジェクトのシリアル化のサポートを提供します。
3. タスクのエンキュー
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 つのメソッドを使用してキュータスクを実行できます。
'default' => env('QUEUE_DRIVER', 'sync'),
現時点では、dispatch
関数を呼び出してタスクをキューに追加した後、タスクは現在のリクエストですぐに実行されます。
非同期実行
'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 サイトの他の関連記事を参照してください。