概要
通常のWebリクエスト中に実行するのでは時間がかかり過ぎるタスクがある場合、
バックグラウンドで処理したい仕事をキューへ投入する。
(キュー:逐次入出力が繰り返されるデータを一時的に蓄えておくためのデータ構造)
Laravelはそれ用のジョブクラスが作成できる。
ジョブ作成
全てのキュー用ジョブは app/Jobs
ディレクトリ配下に配置する。
php artisan make:job HogeProcess
で生成されたクラスは Iluminate\Contracts\Queue\ShouldQueue
インターフェース を実装する。
クラス構造
handle
メソッドのみを持つ。
これはジョブがキューにより処理される際に呼び出される。
handle
メソッドでは依存関係をタイプヒント(型宣言)できる。
namespace App\Jobs;
use Illuminate\Contracts\Queue\ShouldQueue;
class HogeProcess implements ShouldQueue
{
protected $hoge;
/**
* ジョブインスタンス作成
*/
public function __construct(Hoge $hoge)
{
$this->hoge = $hoge;
}
/**
* ジョブの実行
*/
public function handle(HogeProcesser $hogeProcessor)
{
// ジョブ実行処理
}
}
ジョブの失敗
ジョブを失敗した場合fail
メソッドを呼び出す。
public function handle()
{
// 処理
// ジョブ失敗
$this->fail();
}