ピックアップ
Laravelのqueueについてのデフォルト設定と基本についての個人的メモ。

Laravelで、
queueを使っていたが、
使い方のみ調べて、
設定して運用していたので、
改めて、
個人用に再確認して、
それを自分のために整理したメモ。
最新情報や、
情報の精査は、
公式サイトなどを正として、
必要に応じて、
そちらをご覧ください。
あくまで、
個人用のメモなので。
前提
Laravelで試していますが、
バージョンについては、
php artisan --versionで確認すると、
概ね、
10か11でした。
Queueとは?
キューについては、
目的としては、
- 重い処理(メール送信・API 呼び出し等)を非同期化
- パフォーマンス向上
- さまざまなキューバックエンドを統一的に扱うため
という認識。
Laravel 8 以降は Job のバッチ処理などが強化された認識で、
自分もそれの少し後くらいから使い始めました。
Queueを動かすコマンドや関数
メインとして
php artisan queue:workJob(処理内容)
こちらは、
実際に実行されるときに、
どのような処理するかを記載する。
処理の実装は、
- クラスとして定義し、
handle()に処理を書く Job::dispatch()でキューに投入
を実装するので、
app/Jobsなどにまとめる。
Queue Driver(保存先)
Driverについては、
- sync
- Redis
- Database
- Amazon SQS
などが設定できますが、
デフォルトは、
config/queue.phpに設定があり、
'default' => env('QUEUE_CONNECTION', 'sync'),であるので、
ここで設定変更できる。
Worker(実行役)
Workerに関しては、
- キューから Job を取り出して順次実行
- 成功→削除、失敗→リトライ or Failed Jobs
を行うもの。
これは、
php artisan queue:workで動かす認識。
メモ
✔️ よくある誤解
「worker が実行する時にコンストラクタが再び呼ばれる?」
→ 呼ばれません。
Job は シリアライズ → デシリアライズ されるので、
実行時に呼ばれるのは handle() だけ です。
シリアライズ(serialize)とは?
オブジェクトや配列などの「複雑なデータ」を、
ファイルやキューに保存できる「文字列データ」に変換すること。
逆に元に戻すことを デシリアライズ(unserialize) と言います。
⚙️ Laravel Queue でのシリアライズ
Laravel の Queue に Job を入れるとき、こうしています:
- dispatch() が Job のインスタンスを作る(コンストラクタが呼ばれる)
- Job のインスタンスをシリアライズ(=文字列データ化)する
- その文字列を Redis/SQS/DB に保存する
- Worker が文字列を取り出して
- デシリアライズ(元の Job インスタンスに復元)
handle()を実行
重要ポイント
- コンストラクタが呼ばれるのは dispatch 時だけ
- Worker 側は デシリアライズで復元されるだけなので、
コンストラクタは実行されない - 実際の処理は handle() に書く必要がある理由がこれ
🏁 まとめ(超シンプル)
- シリアライズ=オブジェクトを文字列にする
- デシリアライズ=文字列から元のオブジェクトに戻す
- Laravel Queue は「Job をシリアライズしてキューに保存する」
- Worker はそれをデシリアライズして
handle()を実行する - コンストラクタは dispatch 時しか呼ばれない
おすすめ書籍
コメント一覧
コメントはまだありません。




コメントを残す