Mặc định Laravel cung cấp các method schedule cho khai báo Cronjob:
Method | Mô tả |
---|---|
->cron('* * * * *'); | Run the task on a custom Cron schedule |
->everyMinute(); | Run the task every minute |
->everyFiveMinutes(); | Run the task every five minutes |
->everyTenMinutes(); | Run the task every ten minutes |
->everyFifteenMinutes(); | Run the task every fifteen minutes |
->everyThirtyMinutes(); | Run the task every thirty minutes |
->hourly(); | Run the task every hour |
->hourlyAt(17); | Run the task every hour at 17 mins past the hour |
->daily(); | Run the task every day at midnight |
->dailyAt('13:00'); | Run the task every day at 13:00 |
->twiceDaily(1, 13); | Run the task daily at 1:00 & 13:00 |
->weekly(); | Run the task every week |
->weeklyOn(1, '8:00'); | Run the task every week on Monday at 8:00 |
->monthly(); | Run the task every month |
->monthlyOn(4, '15:00'); | Run the task every month on the 4th at 15:00 |
->quarterly(); | Run the task every quarter |
->yearly(); | Run the task every year |
->timezone('America/New_York'); | Set the timezone |
Trong Laravel thời gian tối thiểu giữa 2 lần chạy job là 1 phút. Vì 1 lý do nào đó cần phải chạy 1 job định kỳ 20-30s chẳng hạn. Khi đó ta cần khai báo 1 job chạy định kỳ 1 phút và chia nhỏ phần thực thi. Sửa lại file Kernel.php
protected function schedule(Schedule $schedule){ $schedule->call(function () use ($schedule) { $seconds = 10; $dt = Carbon::now(); $x= 60/$seconds; do{ echo $dt."\n"; Artisan::call('pokez'); Artisan::call('board'); time_sleep_until($dt->addSeconds($seconds)->timestamp); } while($x-- > 0); })->everyMinute(); }
Ở đây mình chạy 2 job pokez và board, để kiểm tra user, định kỳ 10s 1 lần.
Kiểm tra cho đúng, chạy lệnh `php artisan schedule:run` để xem kết quả. Nếu như này thì đã cấu hình đúng:
phamcuongt2@MacBook-Pro pokez.laravel.vip % php artisan schedule:run Running scheduled command: Closure 2019-12-12 02:10:09 2019-12-12 02:10:19 2019-12-12 02:10:29 2019-12-12 02:10:39
Thêm bình luận