ホームページ  >  記事  >  PHPフレームワーク  >  laravelキューが失敗するとどうなりますか?

laravelキューが失敗するとどうなりますか?

PHPz
PHPzオリジナル
2023-04-23 09:08:281198ブラウズ

Laravel キューを使用すると、タスクの実行エラーが発生する可能性があります。現時点では、Laravel は失敗キューを使用するという優れた解決策を提供しています。

キュー タスクを実行するとき、失敗したタスクを処理するために特別に設計されたキューに失敗したタスクをプッシュし、このキューを定期的にチェックして、その中で失敗したタスクを再実行できます。このようにして、小さな問題によってキュー タスクが終了することを回避し、サービスを提供し続けることができます。

Laravel の失敗キューは、独自のニーズに応じて構成できるさまざまな構成と拡張可能なインターフェイスを提供します。

まず、失敗したタスクが入るキューを設定ファイル config/queue.php に設定する必要があります。この構成項目のキーは failed で、その値は 2 つの構成項目 (driverqueue) を含む配列です。 driver 構成項目は、どの障害ドライバーを使用するかを示します。Laravel は、デフォルトで 2 つの障害ドライバー (databaseredis) を提供します。 queue は、失敗したタスクがどのキューに入るかを示します。

'failed' => [
    'driver' => 'database',
    'queue' => 'failed',
],

他の障害ドライバーを使用したい場合は、カスタム障害ドライバーを登録し、driver 構成項目でそれを参照することで使用できます。

カスタム ドライバーを登録するコードは次のとおりです:

Queue::failing(function ($connection, $job, $data) {
    // 自定义处理逻辑
});

次に、失敗したタスクを処理するための特定のロジックを定義する必要があります。失敗したタスクをキューに直接プッシュし、次のキュー処理中にタスクが再度実行されるようにすることができます。あるいは、失敗したタスクに関する情報を後続の検査や処理のために保存することもできます。

失敗したタスクをキューにプッシュする処理方法については、次のコードを使用できます。

Queue::failing(function ($connection, $job, $data) {
    $queue = $job->getQueue();
    $payload = $job->payload();

    Queue::pushRaw($payload, $queue);
});

このコードは、失敗したタスクを元のキューにプッシュし、次に実行されるのを待ちます。時間。

失敗したタスク情報を保存する方法については、次のコードを使用できます:

Queue::failing(function ($connection, $job, $data) {
    // 将失败任务信息存储到数据库中
    DB::table('failed_jobs')->insert([
        'connection' => $connection,
        'queue' => $job->getQueue(),
        'payload' => $job->getRawBody(),
        'exception' => $data['exception'],
        'failed_at' => now(),
    ]);
});

このコードは、失敗したタスク情報をデータベース テーブル failed_jobs に保存します。後で確認して処理できます。

上記の 2 つの処理方法に加えて、Laravel では選択できるさらに多くの処理方法も提供されています。詳細については、Laravel のドキュメントとソースコードを確認してください。

最後に、定期的に失敗キューをチェックし、その中のタスクを再試行する必要があります。 Laravel は、タスクを再試行するための queue:retry コマンドをデフォルトで提供します。このコマンドは、再試行するタスク キューを表すオプションのパラメータ --queue を受け入れます。このパラメータが指定されていない場合、デフォルトですべてのキューが再試行されます。

php artisan queue:retry 5 --queue=my-queue

このコマンドは、失敗キューの my-queue キューから最初の 5 つの失敗したタスクを再実行します。

さらに、オペレーティング システムのスケジュールされたタスク ツール (crontab など) を使用して、queue:retry コマンドを定期的に実行し、失敗したタスクを定期的に処理することもできます。

つまり、Laravel の失敗キューは、キュータスクの失敗を処理するための非常に便利なソリューションを提供します。独自のニーズに応じて構成し、失敗したタスクをさまざまな方法で処理できます。同時に、失敗キューを定期的にチェックし、キュー内のタスクを再試行して、キューのタスクが正常に実行できることを確認する必要もあります。

この記事が皆様のお役に立てれば幸いです。

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

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