【Laravel】【JOB】タイムアウト設定が効かない?

Laravel
Gerd AltmannによるPixabayからの画像

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のジョブのリトライの挙動について

オススメ

コメント

タイトルとURLをコピーしました