1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Laravel タスクスケジュールを使う

Posted at

はじめに

毎日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の機能を余すことなく使いこなせるようになりたいです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?