LoginSignup
2
2

More than 1 year has passed since last update.

概要

通常の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();
}

参考

Laravel 8.x キュー
待ち行列,キュー(queue)

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2