การตั้งค่า Cron Job ระดับโดเมนใน Plesk — Cron Job ทำให้สามารถทำงานบนเซิร์ฟเวอร์ได้โดยอัตโนมัติตามตารางเวลาที่กำหนด ต้องตั้งค่า Cron Job เพื่อสำรองข้อมูล ทำความสะอาด Database, ส่ง Email Notification, หรืออัปเดตข้อมูลเป็นระบบ Cron Jobs เป็นเครื่องมือพื้นฐานที่ผู้ดูแลเซิร์ฟเวอร์ต้องใช้
ทำไมต้องตั้งค่า Cron Job ใน Plesk?
Cron Job ช่วยให้งานบางอย่างทำงานได้อัตโนมัติ เช่น:
- WordPress เก็บกวาดจำนวน Revisions และลบข้อมูลที่ไม่ต้องการ
- ลบ Transient Data และ Temporary Files ในฐานข้อมูล
- ส่ง Email Marketing และการแจ้งเตือน (Notifications)
- สำรองข้อมูลอัตโนมัติตามวัน/เวลาที่กำหนด
- ทำความสะอาด Log Files และ Cache
- อัปเดต Content จาก External API หรือ Feed
- ทำงาน WordPress Scheduled Tasks (wp-cron)
ต้องตั้งค่า Cron Job ให้เหมาะสม เพื่อให้เว็บไซต์ทำงานได้เรียบร้อยและไม่เสียประสิทธิภาพ
วิธีการทำงานของ Cron Job
Cron Job ทำงานผ่าน Cron Daemon ซึ่งเป็นโปรแกรมในเซิร์ฟเวอร์ Linux ที่ทำงานตลอดเวลา Cron จะตรวจสอบตารางเวลา (Cron Table) และรันคำสั่งตามเวลาที่ตั้งไว้
ตัวอย่าง: หากคุณตั้ง Cron Job ให้รันเวลา 2:00 AM ทุกวัน Cron จะทำการรันคำสั่งนั้นเวลา 2:00 AM โดยอัตโนมัติโดยไม่ต้องคุณทำอะไร
ขั้นตอนการตั้งค่า Cron Job ทีละขั้นตอน
- ขั้นที่ 1: เข้าสู่ Plesk Control Panel และคลิก “Websites & Domains”
- ขั้นที่ 2: เลือกโดเมนของคุณ และคลิก “Scheduled Tasks” หรือ “Cron Jobs” (ตัวเลือกจะขึ้นอยู่กับเวอร์ชัน Plesk)
- ขั้นที่ 3: คลิก “Create Cron Job” หรือ “Add Scheduled Task”
- ขั้นที่ 4: ใส่ Cron Command เช่น
php /var/www/vhosts/example.com/httpdocs/wp-cron.php - ขั้นที่ 5: ตั้งเวลา (นาที, ชั่วโมง, วัน, เดือน, วันในสัปดาห์) โดยใช้ Cron Expression Format
- ขั้นที่ 6: ตัวเลือก “Email Output” เพื่อให้ได้รับการแจ้งเตือน Error (ถ้ามี)
- ขั้นที่ 7: บันทึก Cron Job
Cron Expression Format อธิบาย
Cron Expression ใช้ 5 ช่องสำหรับกำหนดเวลา โดยแต่ละช่องคั่นด้วย Space:
นาที ชั่วโมง วันของเดือน เดือน วันของสัปดาห์ 0 2 * * *
รายละเอียดแต่ละช่อง:
- Minute (0-59): นาที ที่ต้องการให้ทำงาน (เช่น 0 = นาทีที่ 0)
- Hour (0-23): ชั่วโมงที่ต้องการให้ทำงาน (เช่น 2 = เวลา 2:00 AM)
- Day of Month (1-31): วันที่ในเดือน (เช่น 1 = วันที่ 1)
- Month (1-12): เดือน (เช่น 1 = มกราคม)
- Day of Week (0-7): วันในสัปดาห์ (0 หรือ 7 = Sunday, 1 = Monday, …, 6 = Saturday)
ตัวอักษร Special Characters ใน Cron:
- * (Asterisk): ทุกค่า ในช่องนั้น
- , (Comma): หลายค่า เช่น 1,3,5 หมายถึง 1, 3, และ 5
- – (Hyphen): ช่วงค่า เช่น 1-5 หมายถึง 1, 2, 3, 4, 5
- / (Slash): ช่วงเวลา เช่น */5 หมายถึง ทุกๆ 5 หน่วย
ตัวอย่าง Cron Expression
- 0 2 * * * = ทุกวันเวลา 2:00 AM (Daily)
- 0 2 * * 0 = ทุกสัปดาห์วันอาทิตย์เวลา 2:00 AM
- 0 2 1 * * = วันที่ 1 ของทุกเดือนเวลา 2:00 AM
- */5 * * * * = ทุกๆ 5 นาที (ตลอด 24 ชั่วโมง)
- 0 */2 * * * = ทุกๆ 2 ชั่วโมง (เวลา 12:00, 2:00, 4:00 AM…)
- 0 9-17 * * 1-5 = วันจันทร์-ศุกร์ ทุกชั่วโมง 9:00 AM ถึง 5:00 PM
การตั้งค่า WordPress Cron (wp-cron)
WordPress มี wp-cron ซึ่งทำงานเมื่อมีผู้เยี่ยมชมเว็บไซต์ เพื่อให้ WordPress Cron ทำงานอย่างสม่ำเสมอ คุณควรตั้ง System Cron ให้เรียก wp-cron.php ตามเวลา
ตัวอย่าง Cron Command สำหรับ WordPress:
php /var/www/vhosts/yoursite.com/httpdocs/wp-cron.php
หากใช้ curl คำสั่งจะเป็น:
curl -s https://yoursite.com/wp-cron.php > /dev/null
หรือใช้ wget:
wget -q -O - https://yoursite.com/wp-cron.php > /dev/null 2>&1
การตั้งค่าที่สำคัญ
- Run As User: เลือก User ที่ต้องการให้ Cron ทำงานเป็น (โดยปกติเป็น nobody หรือ www-data)
- Log Output: เก็บข้อความ Output ของ Cron เพื่อ Debugging
- Email Notification: ส่ง Email ถ้า Cron ล้มเหลว
การเข้าถึง SSH Terminal
หากคุณต้องการตั้งค่า Cron เพิ่มเติมผ่าน Command Line Interface (CLI) คุณสามารถใช้ SSH Terminal ใน Plesk เพื่อเข้าถึง Command Line
การดูและดีบัก Cron Output
เพื่อดูว่า Cron ทำงานสำเร็จหรือไม่ คุณสามารถ:
- ตั้ง “Email Output” ให้ส่ง Email เมื่อ Cron ทำงาน
- ดู Cron Log ผ่าน Log Browser ใน Plesk (ตัวเลือก “System Logs” หรือ “Cron Logs”)
- ใช้ SSH Terminal เพื่อดู Cron Log ด้วยคำสั่ง
tail -f /var/log/cron
เคล็ดลับและข้อควรระวัง
- ✅ ใช้ Cron Expression ตัวอย่าง: “0 2 * * *” = ทุกวันเวลา 2:00 AM เป็นเวลาที่เหมาะสมสำหรับการสำรองข้อมูล
- ✅ ตรวจสอบ Cron Output ด้วยการส่ง Email (Enable Email Notification) เพื่อทราบว่าทำงานสำเร็จหรือไม่
- ✅ ใช้ UTC Time หรือเวลาที่กำหนดในการตั้ง Cron ให้สอดคล้องกับเขตเวลา
- ⚠️ ห้ามตั้ง Cron ให้ทำงานบ่อยเกินไป (>5 min interval) เพื่อไม่ให้เสียประสิทธิภาพของเซิร์ฟเวอร์
- ⚠️ ควรทดสอบคำสั่ง Cron ด้วยตนเองผ่าน SSH ก่อนตั้ง Cron ให้มั่นใจว่าทำงานได้
- ⚠️ เหลื่อม Cron Jobs ของหลายเว็บไซต์เพื่อไม่ให้รันในเวลาเดียวกัน (เช่น Site 1 เวลา 2:00 AM, Site 2 เวลา 2:15 AM)
การแก้ไขปัญหา Cron ที่พบบ่อย
ปัญหา: Cron ไม่ทำงาน
วิธีแก้:
- ตรวจสอบ Cron Command ว่าถูกต้องหรือไม่
- ตรวจสอบ Path ของไฟล์ว่าถูกต้องหรือไม่
- ทดสอบ Command ด้วย SSH Terminal ผ่าน Plesk Server Settings
- ดู Cron Log ผ่าน Log Browser เพื่อหา Error Message
ปัญหา: Cron ทำงานแต่ไม่เสร็จสมบูรณ์
วิธีแก้:
- เพิ่ม Timeout ของ Cron Command
- ปรับปรุง Database Query หรือ Code เพื่อให้เร็วขึ้น
- แบ่ง Cron Task เป็นหลายๆ งานเล็กแทนงานใหญ่เดียว
คำถามที่พบบ่อย (FAQ)
Q: WordPress Cron ต้องตั้งค่ากี่นาที?
A: แนะนำ 1-5 นาที ขึ้นอยู่กับปริมาณ Scheduled Tasks ของ Plugin และ Theme ที่ติดตั้ง
Q: Cron Expression “*/5 * * * *” หมายความว่าไร?
A: ทุกๆ 5 นาที (run every 5 minutes) ตัวอักษร * หมายถึง “ทุกค่า” และ / หมายถึง “ช่วง”
Q: สามารถตั้ง Cron โดยไม่ใช้ Plesk Control Panel ได้หรือไม่?
A: ได้ คุณสามารถใช้ SSH Terminal แล้วแก้ไข crontab ด้วยคำสั่ง crontab -e โดยตรง
สรุป
การตั้งค่า Cron Job ใน Plesk เป็นวิธีที่ดีในการให้งานทำงานได้อัตโนมัติ ด้วยการตั้ง Cron Expression ที่ถูกต้อง ทดสอบ Command ก่อน และตรวจสอบ Log เป็นประจำ คุณสามารถให้เว็บไซต์ทำงานอัตโนมัติและลดเวลาการจัดการเซิร์ฟเวอร์อย่างมีประสิทธิภาพ
