概要
laravelのキューとジョブとワーカーについて簡単にまとめる。
内容
キュー
処理を入れておくための「筒」
この「筒」の素材(ドライバ)を指定する事ができる
素材(ドライバ)の種類は下記
- sync(ローカル開発環境のみの設定を推奨。動作確認には使えるが同期処理になってしまうのでデプロイしたら「挙動が変わった」なんてことがありうる。)
- database
- redis
- beanstalkd
- sqs
どの素材(ドライバ)を使うかは自由だがそれぞれ得手不得手がある。(マイグレーションが必要だったり、デプロイ時に別途お金がかかったり。ローカル開発環境だけでも別でDockerコンテナ立てる必要があったり)
ジョブ
実行する処理命令が記載されているもの
基本的に非同期実行したい処理をただ書くだけ。
若干お作法があるので注意
ワーカー
キューに入ったジョブの処理を実行してくれるもの
本当にそれだけ。
キューとジョブとワーカーの使い方(ローカル開発環境でターミナル使用)
- .envの
QUEUE_CONNECTION
を確認し、必要の応じてキューの素材(ドライバ)をdatabaseなどに変更 - DBにjobsテーブルがあることを確認(なければ
$ php artisan make:queue-table
を実行してから$ php artisan migrate
を実行) - ジェネレートコマンド(
php artisan make
)を使ってジョブを作成 - 作成されたジョブのファイルに処理を記載
- tinkerやコードで
ジョブのクラス::dispatch();
を実行しジョブをキューにいれる - ターミナルで
$ php artisan queue:work
を実行しワーカーを起動
参考文献