คำตอบสั้น ๆ: ตั้ง Cronjob บน DirectAdmin ให้รันสคริปต์ PHP หรือ wp-cron.php ตามเวลาที่กำหนด เข้าใจรูปแบบเวลา 5 ช่อง และตรวจว่างานทำงานจริง
คู่มือนี้อธิบาย DirectAdmin ทีละขั้นตอน พร้อมคำสั่งที่ใช้ได้จริงและปัญหาที่พบบ่อย
Cronjob คือการตั้งให้เซิร์ฟเวอร์รันคำสั่งหรือสคริปต์เองตามเวลาที่กำหนด เช่น รันไฟล์ PHP ส่งอีเมลสรุปทุกเช้า ล้างไฟล์ Cache ทุกชั่วโมง หรือเรียก wp-cron.php ของ WordPress ให้ทำงานตรงเวลาแทนการรอผู้เข้าชมเว็บ บน DirectAdmin คุณตั้ง Cronjob ได้จากหน้า Control Panel โดยไม่ต้องใช้ SSH
บทความนี้อธิบายรูปแบบเวลาของ Cron การเพิ่ม Cronjob ใน DirectAdmin แบบ Evolution skin ตัวอย่างคำสั่งที่ใช้บ่อย และวิธีตรวจว่า Cronjob ทำงานจริง หากคุณใช้ Plesk ดูคู่มือ วิธีตั้งค่า Cronjob บน Plesk Control Panel Hosting และหากใช้ Linux Server ที่ไม่มี Control Panel ดู วิธีตั้ง Cronjob หรือ Crontab บน Linux
สิ่งที่ต้องเตรียม
- บัญชี DirectAdmin ระดับ User ที่แพ็กเกจเปิดสิทธิ์ Cronjobs ไว้
- path เต็มของสคริปต์ที่ต้องการรัน เช่น
/home/ชื่อผู้ใช้/domains/example.com/public_html/cron.php - ทดสอบให้แน่ใจก่อนว่าสคริปต์ทำงานถูกต้องเมื่อรันด้วยมือ
ขั้นตอนที่ 1: เข้าใจรูปแบบเวลาของ Cron
Cron ใช้ 5 ช่องกำหนดเวลา เรียงจากซ้ายไปขวาดังนี้
| ช่อง | ความหมาย | ค่าที่ใส่ได้ |
|---|---|---|
| Minute | นาที | 0-59 |
| Hour | ชั่วโมง | 0-23 |
| Day of Month | วันที่ | 1-31 |
| Month | เดือน | 1-12 |
| Day of Week | วันในสัปดาห์ | 0-6 (0 คือวันอาทิตย์) |
เครื่องหมาย * หมายถึงทุกค่า */15 หมายถึงทุก 15 หน่วย 1,15 หมายถึงค่า 1 และ 15 และ 1-5 หมายถึงช่วง 1 ถึง 5 ตัวอย่างที่ใช้บ่อย
| Minute | Hour | Day of Month | Month | Day of Week | ความหมาย |
|---|---|---|---|---|---|
| */5 | * | * | * | * | ทุก 5 นาที |
| 0 | * | * | * | * | ต้นชั่วโมงทุกชั่วโมง |
| 30 | 2 | * | * | * | ทุกวันเวลา 02:30 |
| 0 | 8 | * | * | 1-5 | จันทร์ถึงศุกร์ เวลา 08:00 |
| 0 | 0 | 1 | * | * | วันที่ 1 ของทุกเดือน เวลาเที่ยงคืน |
หมายเหตุ: เวลาของ Cronjob เป็นเวลาตาม Timezone ของเซิร์ฟเวอร์ ไม่ใช่เวลาในเครื่องของคุณ หากเซิร์ฟเวอร์ตั้งเป็น UTC เวลา 02:30 ของ Cron จะตรงกับ 09:30 ตามเวลาประเทศไทย ผู้ที่ดูแลเซิร์ฟเวอร์เองตรวจได้ด้วยคำสั่ง
timedatectl
ขั้นตอนที่ 2: เพิ่ม Cronjob ใน DirectAdmin
- ล็อกอิน DirectAdmin แล้วไปที่หมวด Advanced Features คลิก Cronjobs (หรือพิมพ์ cron ในช่องค้นหาด้านบน)
- คลิก Create Cron Job (บางเวอร์ชันแสดงฟอร์มเพิ่มไว้ที่หน้าเดียวกันเลย)
- กรอก Minute, Hour, Day of Month, Month และ Day of Week ตามตารางในขั้นตอนที่ 1
- ในช่อง Command ใส่คำสั่งเต็ม ตัวอย่างอยู่ในขั้นตอนที่ 3
- หากไม่ต้องการรับอีเมลแจ้งผลทุกครั้งที่ Cron ทำงาน ให้ติ๊ก Prevent E-mail ระบบจะต่อท้ายคำสั่งด้วย
>/dev/null 2>&1ให้ - กด Create
ด้านบนของหน้า Cronjobs มีช่องกำหนดอีเมลที่จะรับผลลัพธ์ (output) ของทุก Cronjob ในบัญชี ในช่วงทดสอบแนะนำให้ใส่อีเมลของคุณและยังไม่ติ๊ก Prevent E-mail เพื่อจะได้เห็นข้อความ Error หากคำสั่งผิด เมื่อแน่ใจว่าทำงานถูกต้องแล้วจึงปิดอีเมล เพื่อไม่ให้กล่องจดหมายเต็ม