Laravel キューのタスク実行失敗処理戦略
Laravel フレームワークに基づいてプロジェクトを開発する場合、電子メールの送信など、時間のかかるタスクを非同期に処理するためにキューを使用することがよくあります。 、レポートの生成など。ただし、実際のアプリケーションでは、さまざまな理由でキュー タスクの実行に失敗する可能性があるため、この状況に対処し、タスクを正常に完了できるようにするための処理戦略を策定する必要があります。
Laravel では、キュー タスクの実行が失敗したときの処理戦略を設定できます。一般的な処理戦略は次のとおりです。
具体的なコード例を見てみましょう:
まず、Laravel プロジェクトで config/queue.php
構成ファイルを開きます。 find failed
キュー構成項目。キュータスクの実行が失敗した場合の処理戦略を構成するために使用されます。デフォルトの構成は次のとおりであることがわかります。
'failed' => [ 'database' => env('DB_CONNECTION', 'mysql'), 'table' => 'failed_jobs', ],
上記の構成は、失敗したキュー タスクがデータベースの failed_jobs
テーブルに保存されることを意味します。タスクの実行が失敗した場合、失敗情報がこのテーブルに記録されます。
タスクを再試行する機能を実装するには、対応するキュー タスク クラスの tries
属性を使用して再試行回数を設定します。例:
class SendEmailJob implements ShouldQueue { use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; public $tries = 3; // 设置最多重试3次 public function handle() { // 任务执行逻辑 } public function failed(Throwable $exception) { // 任务失败时的处理逻辑 } }
上記のコードでは、SendEmailJob
クラスは電子メール送信のキュー タスクを表します。$tries
属性を 3 に設定すると、次のようになります。最大 3 回まで再試行できます。タスクの実行が失敗すると、failed
メソッドが処理のためにトリガーされます。
さらに、SendEmailJob
クラスの failed
メソッドをオーバーライドして、タスクの実行が失敗したときの処理ロジックをカスタマイズできます。たとえば、ログを記録したり、開発者に通知を送信したりできます。
失敗したタスクを失敗キューに入れる操作では、SendEmailJob
クラスの Queue::failing
メソッドを使用して、タスクを失敗キューに入れることができます。列。サンプルコードは以下の通りです:
public function handle() { // 任务执行逻辑 } public function failed(Throwable $exception) { Queue::failing(function (JobFailed $event) { // 将任务放入失败队列 $failedJob = $event->job; dispatch(new ProcessFailedJob($failedJob->payload())); }); }
上記はLaravelキューのタスク実行失敗時の処理戦略であり、リトライ回数の設定やログの記録、通知の送信などを行うことでタスク実行に効果的に対処できます。障害を検出し、システムの安定性を確保します。上記の内容がお役に立てば幸いです。
以上がLaravelキュータスク実行失敗処理戦略の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。