LaravelアプリのコントローラーからArtisanコマンドを実行しています。ドキュメントで指定されているように、次のようにキューに入れることができます。
Artisan::queue('email:send', [
'user' => 1, '--queue' => 'default'
]);
これによりキューロジックが処理され、私の場合、ジョブがRedisに送信され、そこでほぼ即座に処理されます。
仕事を遅らせたい。通常、次のようにキューコマンドを呼び出すときにこれを行うことができます。
$job = (new SendReminderEmail($user))->delay(60);
$this->dispatch($job);
これらの機能に参加して、Artisanコマンドを5分間遅らせる方法はありますか?私はそれを遅らせる簡単なオプションがあると思いました。
そうでない場合は、コントローラーとArtisanコマンドの間に立つ別のJobクラスを作成し、通常の方法でキューに入れて遅延させ、そのJobにArtisanコマンドを呼び出させることができます。しかし、これはそれを機能させるための本当に複雑な方法のようです。キューに入れられたArtisanコマンドを遅らせるより良い方法はありますか?
ありがとうございました
コンソールカーネルは「プッシュ」を使用してコマンドをキューに入れるため、これはlaravel5.3以前では不可能です。
ただし、フレームワークにプルリクエストを送信して、カーネルに「後の」呼び出しを実装することもできます。これは、キューの「後の」関数にパススルーするだけです。
または、すでに述べたように、ジョブクラスを実装するだけです。
しかし、ユースケースにはより良い解決策があります。メールファサードを使用するだけです。
Mail::later(5, 'emails.welcome', $data, function ($message) {
//
});
ドキュメントについては、https://laravel.com/docs/5.2/mail#queueing-mailを参照してください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加