Laravel で定期実行を組む方法として妥当なのはどれですか。
cron には schedule:run を毎分実行する1行だけを置き、個々の予定はアプリ側で定義します。処理を足すたびに cron を編集せずに済み、定義がリポジトリに残ります。
面接官が見ているのはLaravel スケジューラの仕組みを理解しているか。
よくある答えと、面談でどう見られるか
- cron には schedule:run を毎分実行する1行だけ登録し、個々の予定はアプリ側に定義する
定義がリポジトリに入るので、どの環境で何が動くかがコードから分かります。 - 処理ごとに cron を1行ずつサーバーに登録する
動きますが、定義がサーバー上にしか残らず引き継ぎで失われます。 - キューに積めば定期的に実行される
キューは「一度だけあとで実行」です。定期実行の仕組みではありません。 - ミドルウェアで時刻を判定して実行する
リクエストが来ないと動きません。誰もアクセスしない時間帯は実行されません。
面接官は何を見ているか
- schedule:run を毎分 cron で叩く構成を説明できた
- cron 登録が1行で済む利点に触れた
- 実行時間や失敗の扱いを考えていた
模範解答
サーバーの cron には schedule:run を毎分実行する1行だけを登録し、個々のスケジュールはアプリ側のコードで定義します。処理を追加するたびに cron を編集しなくて済み、定義がリポジトリに入るので、どの環境で何が動くかがコードから分かります。失敗時にログを残すか通知を出すかは、処理ごとに決めます。
ここからどう深掘りされるか
この問いに答えられた場合、面談は次の質問に進みます。
観点をすべて押さえられた場合
前回の実行が終わる前に次の実行時刻が来たら、どうなりますか。一部しか触れられなかった場合
cron に直接コマンドを書くのと、Laravel スケジューラを使うのは何が違いますか。