Open2

Laravel Jobについて

hata8341hata8341

Jobクラスについて

LaravelのJobクラスは、キューバックグラウンドで実行するためのタスクやロジックをカプセル化するためのものです。キューを使用すると、時間がかかるタスクを即座に処理する代わりに、後で実行するために「キュー」に入れることができ、ユーザーエクスペリエンスを向上させることができます。

以下はLaravelのJobクラスに関連する主要な要点です。

  1. 作成: php artisan make:job JobName コマンドを使用してJobクラスを作成することができます。

  2. クラス構造: Jobクラスは主にhandleメソッドを持ち、このメソッド内でキューで実行したいロジックやタスクを定義します。

  3. ディスパッチ: Jobをキューに追加するには、dispatchメソッドを使用します。例: SomeJob::dispatch($data);

  4. コンストラクタ注入: Jobクラスのコンストラクタにデータを注入することで、Jobの実行時にそのデータを使用することができます。

  5. 遅延: delayメソッドを使用して、ジョブを特定の時間後に実行するようにスケジュールすることができます。例: SomeJob::dispatch($data)->delay(now()->addMinutes(10));

  6. 最大試行回数 & タイムアウト: triesプロパティとtimeoutプロパティを使用して、ジョブが失敗した場合の最大試行回数と各試行の最大実行時間を定義することができます。

  7. 失敗ジョブの処理: ジョブが指定された回数以上失敗すると、failedメソッドが呼び出され、ここで失敗に関するロジックを定義することができます。

  8. キュードライバー: Laravelは様々なキュードライバー(例: database, redis, sqs, etc.)をサポートしており、.envファイルで設定することができます。

  9. キューワーカーの実行: php artisan queue:workコマンドを使用してキューワーカーを起動し、ジョブを処理します。

LaravelのキューシステムとJobクラスを使用することで、アプリケーションのスケーラビリティとパフォーマンスを向上させることができます。

hata8341hata8341

Jobのタイムアウト

多くの場合、キューに入れられたジョブにかかる時間は大体わかっているものです。このため、Laravelでは「タイムアウト」値を指定することができます。デフォルトでは、タイムアウト値は60秒です。ジョブがタイムアウト値で指定された秒数を超えて処理されている場合、ジョブを処理するワーカーはエラーで終了します。通常、ワーカーはサーバに設定されたプロセスマネージャによって自動的に再起動されます。

ジョブが実行できる最大秒数は、Artisanコマンドラインの-timeoutスイッチを使用して指定できます:

  • デフォルトのタイムアウト時間は60秒に設定されている
  • ジョブの実行時間がタイムアウト時間を超えた場合はエラーとなる
  • ジョブが実行できる最大秒数をジョブクラス自身で定義することもできる
  • タイムアウトがジョブ上で指定された場合、コマンドラインで指定されたタイムアウトよりも優先される

https://laravel.com/docs/9.x/queues#timeout