Cron Job คือระบบตั้งเวลาบนเซิร์ฟเวอร์สำหรับรันคำสั่งอัตโนมัติ เช่น แบ็กอัพฐานข้อมูล เคลียร์แคช สร้างรีพอร์ต หรือยิงเว็บฮุคให้ระบบอื่นๆ ทำงานต่อ จุดเด่นคือ ความแม่นยำตามเวลา โดยที่ไม่พึ่งทราฟฟิกเข้าเว็บเหมือนตัวตั้งเวลาของ CMS บางตัว ทำให้เหมาะกับงานโปรดักชันที่ต้องการความสม่ำเสมอเป็นอย่างยิ่ง
Cron Expression คืออะไร
Cron Expression พื้นฐานมี 5 ช่อง: นาที | ชั่วโมง | วัน (ของเดือน) | เดือน | วัน (ของสัปดาห์)
- */5 * * * * = ทุก 5 นาที
- 0 2 * * * = ทุกวันเวลา 02:00
- 30 3 * * 1 = ทุกวันจันทร์ 03:30
เช่น ถ้าต้องการให้รัน “วันจันทร์–ศุกร์ ระหว่าง 9–18 น. ทุก 30 นาที” ให้ใช้ */30 9-18 * * 1-5
ตั้งค่า Cron Job ใน DirectAdmin (Evolution Skin)
1. เปิด DirectAdmin ไปที่ Advanced Features คลิก Cron Jobs
2. คลิก Create Cron Job แล้วกำหนดเวลาเป็น Minute/Hour/Day/Month/Day of Week จากนั้นใส่คำสั่ง (Command) ที่ต้องการรัน ตัวอย่างที่ใช้บ่อย:
- รันสคริปต์ PHP โดยระบุไบนารีชัดเจน
/usr/local/bin/php /home/USER/domains/DOMAIN/public_html/cron.php - เรียกผ่าน wget (ไม่ต้องเก็บเอาต์พุต)
wget -q -O – “https://DOMAIN/path/cron.php” > /dev/null 2>&1 - เรียกผ่าน curl พร้อมซ่อนเออร์เรอร์ไปที่ log
curl -sS “https://DOMAIN/path/cron.php” >> /home/USER/logs/cron.log 2>&1
แนะนำ: ช่วงแรกเปิด Email Report ไว้เพื่อตรวจผลลัพธ์ เมื่อมั่นใจแล้วค่อยปิดเพื่อลดสแปม
ตัวอย่างคำสั่งงานอื่น ๆ
- แบ็กอัพฐานข้อมูลทุกคืน โดยใช้คำสั่งด้านล่าง เพื่อที่จะบีบอัดไฟล์และใส่วันที่ในชื่อไฟล์ ช่วยไล่เวอร์ชันได้ง่าย
mysqldump -u DBUSER -p’DBPASS’ DBNAME | gzip > /home/USER/backups/db-$(date +\%F).sql.gz - เคลียร์แคช WordPress รายชั่วโมง หากมี WP-CLI จะสั่งงานได้ตรงและเร็ว
wp cache flush –path=/home/USER/domains/DOMAIN/public_html - เรียก Scheduler ของ Laravel โดยควบคุมงานผ่าน app/Console/Kernel.php ได้เลย
/usr/local/bin/php /home/USER/domains/DOMAIN/public_html/artisan schedule:run
ปัญหาที่พบบ่อยใน Cron และวิธีแก้ไข
- Cron ไม่ยอมรัน โดยส่วนใหญ่เกิดจากสิทธิ์ไฟล์ไม่ถูกต้อง หรือระบุ path ผิด ตรวจ owner:group, chmod และตำแหน่งไฟล์ PHP/สคริปต์ให้ตรง
- รันแล้วเจอ 500/Timeout ให้ลองเพิ่ม memory_limit/max_execution_time เฉพาะงานนั้น (ผ่าน php -d), แยกงานเป็นชิ้นเล็กลง หรือกระจายเวลาเพื่อลดโหลด
- เรียก URL แล้วโดนแคช/รีไดเรกต์ ลองใส่พารามิเตอร์กันแคช เช่น ?cron=1&ts=$(date +\%s) หรือสร้าง endpoint ที่ bypass cache โดยเฉพาะ
คำแนะนำจากทีม VPS HiSpeed
- ตั้งค่าให้สคริปต์ทำงานภายใต้ user ที่จำเป็นเท่านั้น ลดความเสี่ยงจากการเข้าถึงไฟล์ระบบ
- ตั้งชื่อไฟล์ log ต่อท้ายวันที่ หรือใช้ logrotate เพื่อลดขนาดและเก็บย้อนหลังได้อย่างเป็นระเบียบ
- หากงานสำคัญ ให้เพิ่มการแจ้งเตือนเมื่อคำสั่งคืนค่าไม่สำเร็จ (exit code ≠ 0) ผ่านอีเมลหรือ Webhook
สรุป
Cron Job บน DirectAdmin ช่วยให้งานซ้ำ ๆ ของเว็บและแอปรันเองตรงเวลาอย่างเสถียร สิ่งสำคัญคือ มีความเข้าใจใน Cron Expression, ระบุคำสั่งให้ถูกเวอร์ชัน/เส้นทาง, ทดสอบบน SSH ก่อนตั้งจริง และติดตามผลด้วย log/อีเมล เมื่อระบบนิ่งแล้ว คุณจะได้เวลาคืนเพิ่มขึ้นและลดโอกาสพลาดงานกลางดึกอย่างเห็นได้ชัด
หากมีข้อสงสัยเพิ่มเติม ทีมงานของเรายินดีช่วยเหลือเสมอ ติดต่อได้ที่ Facebook และ Line@
นิกร รักยิ่งงาม
นิกรเป็นผู้เชี่ยวชาญด้าน IT Support มากกว่า 12 ปี รับผิดชอบการช่วยเหลือลูกค้าด้านเทคนิคเกี่ยวกับ Windows Server, Linux Server, Forex VPS, Web Server, เว็บไซต์ CMS รวมถึงการตั้งค่า Domain และ DNS โดยเน้นการแก้ปัญหาแบบเข้าใจง่าย ทำให้ระบบกลับมาใช้งานได้เสถียรและปลอดภัย
นิกร รักยิ่งงาม
นิกรเป็นผู้เชี่ยวชาญด้าน IT Support มากกว่า 12 ปี รับผิดชอบการช่วยเหลือลูกค้าด้านเทคนิคเกี่ยวกับ Windows Server, Linux Server, Forex VPS, Web Server, เว็บไซต์ CMS รวมถึงการตั้งค่า Domain และ DNS โดยเน้นการแก้ปัญหาแบบเข้าใจง่าย ทำให้ระบบกลับมาใช้งานได้เสถียรและปลอดภัย


