JOBについて
Laravelで重い処理をさせると度々Nginxのタイムアウトに悩まされると思います。。
その時に活躍するのがJOB!!
普通にPOSTリクエストなどで処理させるとタイムアウトになってしまうような激重な処理でも、裏でしれっと処理してくれるJOB! 非常に便利です!
(LaravelのJOBについては↓を参考に)
8.x キュー Laravel

JOBのタイムアウト設定について
そんな便利なJOBですが、タイムアウト対策として作成した場合は↓のようなタイムアウト時間を設定すると思います。ただし、これだけでは設定が不十分なんです!
public $timeout = 120;
↓のようにretryAfterを設定しないと、タイムアウトしてなくても完了していないJOBはリトライされてしまうようです。。
[設定方法①] JOBクラスに設定する場合
public $retryAfter = 200;
[設定方法②] キューの設定ファイルに設定する場合
config/queue.php
'database' => [
'driver' => 'database',
'table' => 'jobs',
'queue' => 'default',
'retry_after' => 200,
// ↑タイムアウトより長く設定しないと、勝手にリトライされるので注意
'after_commit' => false,
],
JOBのタイムアウト設定がうまく効いていない方は一度試してみてください!!
【参考】
Laravelのジョブのリトライの挙動について

オススメ

コメント