用語説明
キューとは
キューは、ある処理を非同期で行うための仕組みです。
キューにジョブが溜まっていき、任意の順番に実行していきます。
ジョブとは
ジョブは、非同期で行う「ある処理」の内容になります。
cache_locks
cache_driverがdatabaseの場合、ジョブの多重起動ロックをかけた場合、cache_locksテーブルにジョブの情報が保持され、有効期限が切れるまでそのジョブは起動されなくなります。
多重起動ロック
public function middleware()
{
return [new WithoutOverlapping($this->user->id)];
}
有効期限の設定
public function middleware()
{
return [(new WithoutOverlapping($this->order->id))->expireAfter(180)];
}
ジョブが重複した場合
再実行して欲しくない時は、dontRelease()を使用します。
重複したジョブを削除してくれます。
public function middleware()
{
return [(new WithoutOverlapping($this->order->id))->dontRelease()];
}
「予期せず」ジョブが重複してしまった場合、データの整合性や引数の中身等がない状態でジョブが実行され、例外エラーが発生します。