Laravelでタスクスケジュール設定に関するメモ

Laravelでタスクスケジュール設定に関するメモ

6 回閲覧されました

みなさんこんにちは、jonioです。

今回はタスクスケジュールの設定に関するメモになります。

新しく知った内容があり次第追記します。

Laravelの無料学習サイトを作りました

Laravelを勉強したい人向けの無料の学習サイトを作りました。

ここからリンクに飛べますのでぜひ利用してください。

〜時間ごとに動作させる

下記の記述をします。

protected function schedule(Schedule $schedule)
{
    // 1時間ごと
    $schedule->command('xxxxx')
             ->hourly();

    // 2時間ごと
    $schedule->command('xxxxx')
             ->cron('0 */2 * * *');

    // 3時間ごと
    $schedule->command('xxxxx')
             ->everyThreeHours();

    // 4時間ごと
    $schedule->command('xxxxx')
             ->cron('0 */4 * * *');

    // 5時間ごと
    $schedule->command('xxxxx')
             ->cron('0 */5 * * *');
}

1時間ごと・3時間ごとだけメソッドが用意されていますがそれ以外は「cron(‘0 */〜 * * *’);」の書き方をします。

決まった日時に動作させる

「00:01」に動作させたいとします。

下記の記述をします。

protected function schedule(Schedule $schedule)
{
    $schedule->command('xxxxx')
             ->dailyAt('00:01');
}

dailyAtメソッドを使い引数は24時間の表記をします。

平日のみ動作させる

下記の記述をします。

protected function schedule(Schedule $schedule)
{
    $schedule->command('xxxxx')
             ->hourly()
             ->weekdays();
}

時間の指定(例えばhourlyメソッド)のあとに「weekdays」メソッドを追記すればいいです。

特定の曜日のみ動作させる

例えば日曜日を除きたかったとします。

下記の記述をします。

protected function schedule(Schedule $schedule)
{
    $schedule->command('xxxxx')
             ->hourly()
             ->when(function () {
               return now()->dayOfWeek ! == 0;
             });
}

「now()->dayOfWeek」で曜日を数値で返します。

対応は以下になります。

0: 日曜日
1: 月曜日
2: 火曜日
3: 水曜日
4: 木曜日
5: 金曜日
6: 土曜日