ホームページ  >  記事  >  PHPフレームワーク  >  laravelキューとは何ですか

laravelキューとは何ですか

青灯夜游
青灯夜游オリジナル
2022-02-14 15:25:423313ブラウズ

laravel では、キューは操作が制限された線形テーブルであり、テーブルの前端 (キューヘッド) では削除操作、テーブルの後端 (キュー末尾) では挿入操作のみが許可されます。 ; 開発者はキューを通じて、時間のかかるタスクの処理を延期できるため、Web リクエストの応答速度が大幅に向上します。

laravelキューとは何ですか

このチュートリアルの動作環境: Windows 7 システム、Laravel 6 バージョン、Dell G3 コンピューター。

#laravel でのキューの使用

##1. キューとはQueue 操作が制限された線形テーブルで、テーブルの前端では削除操作、後端では挿入操作のみが可能なのが特徴です。挿入操作を実行する端はキューの末尾と呼ばれ、削除操作を実行する端はキューの先頭と呼ばれます。

キューを使用すると、時間のかかるタスク (電子メールの送信など) の処理を​​後まで延期できます。これらの時間のかかるタスクを遅らせると、Web リクエストの応答速度が大幅に向上します。

2. 利点

    分離: メッセージ キューはシステムを分離し、応答速度を向上させることができます。内部に集約され外部にオープン;
  • 非同期: メッセージ キューはシステムの非同期機能を取り除き、機能の結合を減らし、開発効率を向上させることができます。
  • ##ピーク クリッピング: メッセージ キューはピークとフローをクリップして、ダウンストリーム コンシューマーの安定した動作を保証できます。

  • 3. 構成

キュー設定ファイルは 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: 同期スケジューリング;

#在路由中简单调用
Route::get('queue',function(){
        \App\Jobs\TestJob::dispatch();
//        \App\Jobs\TestJob::dispatch()->onQueue('qq');
    });

2 つ実行このルートは、qq という名前のキューを生成することがわかります。後でキューを消費します

#6. キューの消費

laravelキューとは何ですか #Laravel新しくキューにプッシュされたタスクを処理するキュー プロセッサがあります。 Artisan コマンド queue:work を使用してキュー プロセッサを開始します。 queue:work コマンドが開始されると、手動で停止するかターミナルを閉じるまで実行され続けることに注意してください。 work --once パラメータを追加し、指定されたキューを消費します

#消费qq队列
php artisan queue:work --queue=qq
2 つの新しいデータがデータベースに追加され、redis 内のデータが消費されたことがわかります


再度ルーティングを実行します

laravelキューとは何ですか

7、イベントキューlaravelキューとは何ですか

キューは通常、遅延したタスクを処理するために使用され、イベントはビジネス ロジックによって処理されます。 Laravel のイベントトリガーは非同期業務処理のキューに分散されるため、ユーザーにプロンプ​​トメッセージを表示する前にリアルタイムで実行結果を待つことなく、迅速に応答できます。

イベント内のビジネスをキューに保存する必要がある場合、キューを再分散する必要はなく、対応するリスナーに Illuminate\Contracts\Queue\ShouldQueue インターフェイスを直接実装できます。 laravelキューとは何ですか

イベントとリスナーの作成

php artisan make:event TestEvent
php artisan make:listener TestListener
app\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());
    });

ルーティングの実行

laravelキューとは何ですか

消費キュー

php artisan queue:work

【関連する推奨事項: laravel ビデオチュートリアル ]

以上がlaravelキューとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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