はじめに
毎日0時にある処理をしたい、といったような時に使えるのがLaravelのタスクスケジュールです。
このタスクスケジュールの使い方について記載します。
参考にしたページ
環境
- Laravel 8.x
スケジュールの定義の仕方
スケジュール(時間指定)するタスクはApp\Console\Kernel
クラス(ファイル)のschedule
メソッドで定義できます。
class Kernel extends ConsoleKernel
{
/**
* アプリケーションのコマンド実行スケジュール定義
*
* @param \Illuminate\Console\Scheduling\Schedule $schedule
* @return void
*/
protected function schedule(Schedule $schedule)
{
$schedule->call(function () {
// ここにスケジュールしたいタスクを記入
// 例: messageテーブルを削除する
DB::table('message')->delete();
})
-> // ここに指定間隔を記載
// 例: 毎日深夜12時に実行
daily();
}
}
- イベントもタスクに指定できます。
event(new イベント名())
タスクスケジュールを指定するメソッド
-
繰り返しのスケジュールオプション -ドキュメント
ドキュメントにまとめて記載してあります。
ここではよく使うと思われるものを抜粋して記載します。
メソッド | 説明 |
---|---|
->everyMinute(); | 毎分タスク実行 |
->hourly(); | 毎時タスク実行 |
->daily(); | 毎日深夜12時に実行 |
時間、曜日等を指定して、細かく調整したスケジュールを作成できます。
詳しくはドキュメントを参照ください。
スケジュールをローカルで実行
下記コマンドでスケジュールを実行することができます。
コマンドを終了するまで1分ごとにスケジュールを呼び出すことができます。
php artisan schedule:work
おわりに
毎日0時にある対象が指定の条件を満たす場合に通知メールを送りたい!といったときに、タスクスケジュールが使えました。
Laravelの機能を余すことなく使いこなせるようになりたいです。