ホームページ > 記事 > PHPフレームワーク > laravelキューとは何ですか
laravel では、キューは操作が制限された線形テーブルであり、テーブルの前端 (キューヘッド) では削除操作、テーブルの後端 (キュー末尾) では挿入操作のみが許可されます。 ; 開発者はキューを通じて、時間のかかるタスクの処理を延期できるため、Web リクエストの応答速度が大幅に向上します。
このチュートリアルの動作環境: Windows 7 システム、Laravel 6 バージョン、Dell G3 コンピューター。
##1. キューとはQueue 操作が制限された線形テーブルで、テーブルの前端では削除操作、後端では挿入操作のみが可能なのが特徴です。挿入操作を実行する端はキューの末尾と呼ばれ、削除操作を実行する端はキューの先頭と呼ばれます。
キューを使用すると、時間のかかるタスク (電子メールの送信など) の処理を後まで延期できます。これらの時間のかかるタスクを遅らせると、Web リクエストの応答速度が大幅に向上します。
2. 利点
キュー設定ファイルは config/queue.php に保存されます。このファイルには、データベース、Beanstalkd、Amazon SQS、Redis、同期ドライバー (同期 - ローカル使用用) など、フレームワークに含まれる各キュー ドライバーの接続設定が含まれています。 ここでは Redis がドライバーとして使用されており、Redis と関連拡張機能をインストールする必要があります。
4. タスク
何かをキューに入れる必要があり、それをタスクと呼びます。 Laravel フレームワークでタスクを作成すると、次のコマンドが提供されます: php artisan make:job TestJob
TestJob.php
namespace App\Jobs;use Illuminate\Bus\Queueable;use Illuminate\Contracts\Queue\ShouldBeUnique;use Illuminate\Contracts\Queue\ShouldQueue;use Illuminate\Foundation\Bus\Dispatchable;use Illuminate\Queue\InteractsWithQueue;use Illuminate\Queue\SerializesModels;use Illuminate\Support\Facades\DB;use Symfony\Polyfill\Intl\Idn\Info;class TestJob implements ShouldQueue{ use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; /** * Create a new job instance. * * @return void */ public function __construct() { // } /** * Execute the job. * * @return void */ public function handle() {// \Log::info('hhh'); DB::connection('test') ->table('master') ->insert([ 'name'=>'小白', 'email'=>'123@qq.com' ]); }}
5. Distribution
タスク クラスを作成したら、タスク自体のディスパッチ メソッドを使用してそれをディスパッチできます。ディスパッチ メソッドに渡されたパラメータは、タスクのコンストラクターに渡されます。 onQueue: 指定されたキュー;
onConnection: 指定された接続;lay: 遅延キュー;
dispatchNow: 同期スケジューリング;#6. キューの消費#在路由中简单调用 Route::get('queue',function(){ \App\Jobs\TestJob::dispatch(); // \App\Jobs\TestJob::dispatch()->onQueue('qq'); });
2 つ実行このルートは、qq という名前のキューを生成することがわかります。後でキューを消費します
#Laravel新しくキューにプッシュされたタスクを処理するキュー プロセッサがあります。 Artisan コマンド queue:work を使用してキュー プロセッサを開始します。 queue:work コマンドが開始されると、手動で停止するかターミナルを閉じるまで実行され続けることに注意してください。 work --once パラメータを追加し、指定されたキューを消費します
#消费qq队列 php artisan queue:work --queue=qq2 つの新しいデータがデータベースに追加され、redis 内のデータが消費されたことがわかります
再度ルーティングを実行します
7、イベントキュー
キューは通常、遅延したタスクを処理するために使用され、イベントはビジネス ロジックによって処理されます。 Laravel のイベントトリガーは非同期業務処理のキューに分散されるため、ユーザーにプロンプトメッセージを表示する前にリアルタイムで実行結果を待つことなく、迅速に応答できます。
イベント内のビジネスをキューに保存する必要がある場合、キューを再分散する必要はなく、対応するリスナーに Illuminate\Contracts\Queue\ShouldQueue インターフェイスを直接実装できます。
イベントとリスナーの作成php artisan make:event TestEvent php artisan make:listener TestListenerapp\providers\EventServiceProvider.phpに登録します
TestListener.php
namespace App\Listeners; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Support\Facades\DB; class TestListener implements ShouldQueue { /** * Create the event listener. * * @return void */ public function __construct() { // } /** * Handle the event. * * @param object $event * @return void */ public function handle() { DB::connection('test') ->table('master') ->insert([ 'name'=>'小黑', 'email'=>'234@qq.com' ]); } }ルーティングの変更
Route::get('queue',function(){ //\App\Jobs\TestJob::dispatch(); //指定队列名称 //\App\Jobs\TestJob::dispatch()->onQueue('qq'); return event(new \App\Events\TestEvent()); });ルーティングの実行 消費キュー
php artisan queue:work
【関連する推奨事項: laravel ビデオチュートリアル ]
以上がlaravelキューとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。