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

4 回閲覧されました
みなさんこんにちは、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: 土曜日