🔹 เกริ่นนำ
Laravel มีระบบ Task Scheduler ที่ช่วยให้เราสามารถตั้งเวลาให้ Artisan command ทำงานอัตโนมัติโดยไม่ต้องสร้าง Cron หลายรายการ เพียงแค่ตั้งค่า Cron รายการเดียวให้รัน Laravel scheduler ทุกนาที แล้วกำหนดงานต่าง ๆ ผ่าน app/Console/Kernel.php
บทนี้จะสอนการตั้ง Scheduled Task เช่น ส่งอีเมลรายวัน ลบ log เก่า หรือดึงข้อมูลจาก API ตามเวลาที่กำหนด
🔸 ตั้ง Cron Job ที่ระบบ (Linux/Unix)
* * * * * php /path/to/artisan schedule:run >> /dev/null 2>&1
💡 ตั้งให้รันทุกนาที แล้ว Laravel จะควบคุมตารางเอง
🔸 การกำหนด Task ใน Kernel
// app/Console/Kernel.php
protected function schedule(Schedule $schedule)
{
$schedule->command('report:daily')->dailyAt('08:00');
$schedule->command('backup:run')->weekly()->sundays()->at('02:00');
}
🔸 ประเภทเวลาที่ Laravel รองรับ
daily()
hourly()
weekly()
monthly()
everyMinute()
,everyFiveMinutes()
cron('0 9 * * *')
(ใช้ Cron expression)
🔸 การเพิ่มเงื่อนไข เช่น ให้ทำงานเฉพาะ production
$schedule->command('report:daily')
->daily()
->environments(['production']);
🔸 การตรวจสอบงานย้อนหลัง
Laravel จะบันทึก log ไว้ใน storage/logs/laravel.log
เมื่อ run แต่ละครั้ง