Lumen キュー サービスは、さまざまなバックグラウンド キュー ドライバーに統合された API を提供します。キューを使用すると、時間のかかるタスク (電子メールの送信など) の実行を遅らせることができるため、Web リクエストの応答速度が大幅に向上します。
1.1 構成
キュー構成オプションは .env ファイルにあります。
1.2 キュードライバーの予備知識
データベース
データベースをキュードライバーとして使用するには、タスクを保存するデータベーステーブルが必要です:
Schema::create('jobs', function (Blueprint $table) { $table->bigIncrements('id'); $table->string('queue'); $table->longText('payload'); $table->tinyInteger('attempts')->unsigned(); $table->tinyInteger('reserved')->unsigned(); $table->unsignedInteger('reserved_at')->nullable(); $table->unsignedInteger('available_at'); $table->unsignedInteger('created_at'); $table->index(['queue', 'reserved', 'reserved_at']);});
以下は、キュードライバーのためにインストールする必要がある依存関係です。上記のキュードライバー:
と多くのフレーム 他の関数と同様に、Lumen のキュー タスク メソッドは Laravel キュー タスクに依存しているため、Lumen キュー タスクの詳細については、完全な Laravel キュー ドキュメントを参照してください。
ただし、Lumen と Laravel のキュー実装では、サポートが若干異なります。これらの違いについては以下で説明します。まずキュータスクの生成を見てみましょう。
2.1 Generator
Lumen には新しいタスク クラスの組み込みの自動作成がありません。代わりに、このクラスは、各キュー タスクが継承する基本的なクラス構造を提供します。 Job クラスには既に InteractsWithQueue、Queueable、SerializesModels の特性が含まれています。
<?phpnamespace App\Jobs;class ExampleJob extends Job{ /** * Create a new job instance. * * @return void */ public function __construct() { // } /** * Execute the job. * * @return void */ public function handle() { // }}
キュー タスクの分散に関する詳細については、Laravel フレームワークと同様に、Laravel キューのドキュメントを参照してください。 Lumen アプリケーションからディスパッチ メソッドを使用できます。 タスクをどこにでも分散できます:
dispatch(new ExampleJob);
Queue::push(new ExampleJob);