Laravelでアプリケーションを運用する際に欠かせない「裏側の仕組み」を、レストランの運営に例えて分かりやすくまとめました。
1. キュー (Queue)
【役割:注文票の並び(行列)】
ユーザーから依頼された「重い処理(メール送信、画像加工など)」を、その場ですぐに実行せず、一旦**「あとでやるリスト」**に入れておく仕組みです。
- メリット: ユーザーを待たせずに「受け付けました!」と即座にレスポンスを返せる。
-
実体: データベース(
jobsテーブル)や、Redisなどのストレージに保存された「仕事のデータ」。
2. ワーカー (Worker)
【役割:調理担当のスタッフ】
キュー(注文票)に溜まっている仕事を、実際に一つずつ取り出して実行するプログラムです。
-
コマンド:
php artisan queue:work - 動き: 仕事があれば処理し、なければ次の仕事が来るまでずっと待機(監視)し続けます。
3. スーパーバイザー (Supervisord)
【役割:現場監督】
ワーカー(スタッフ)が倒れていないか常に監視し、もし止まったら即座に再起動させるツールです。
-
なぜ必要か:
queue:workコマンドはエラーなどで稀に止まってしまうことがあります。監督(スーパーバイザー)がいないと、作業員が不在になり、キューがいつまでも処理されなくなってしまいます。 - 主な仕事: 24時間体制でワーカーを見守り、サーバーが再起動したときも自動でワーカーを立ち上げます。
4. クローン (Cron / Task Scheduler)
【役割:時報とスケジュール帳】
「1分おき」「毎日24時」など、決まった時間になったら特定の処理を起動する仕組みです。
-
Laravelでの仕組み: サーバーの
cronが1分おきにLaravelを叩き起こし、Laravel内の「スケジュール帳(routes/console.phpやapp/Console/Kernel.php)」を見て、その時間にやるべき仕事があれば実行します。 -
ワーカーとの違い:
- ワーカー: 仕事が入ったら「即座に」やる。
- クローン: 仕事があるかないかに関わらず「決まった時間に」動く。
💡 まとめ:これら4つの関係図
これらが連携して動くことで、スムーズな処理が実現します。
- クローンが「毎日18時だ、メルマガ発行の準備をしろ!」と命令。
- プログラムが「1万人分のメルマガ送付」という仕事をキューにドサッと入れる。
- ワーカーが、キューから1通ずつ取り出して実際にメールを送信する。
- スーパーバイザーは、ワーカーがサボったり倒れたりしないか監視し続ける。