การตั้งค่า Cron Job ระดับโดเมนใน Plesk

การตั้งค่า 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. ขั้นที่ 1: เข้าสู่ Plesk Control Panel และคลิก “Websites & Domains”
  2. ขั้นที่ 2: เลือกโดเมนของคุณ และคลิก “Scheduled Tasks” หรือ “Cron Jobs” (ตัวเลือกจะขึ้นอยู่กับเวอร์ชัน Plesk)
  3. ขั้นที่ 3: คลิก “Create Cron Job” หรือ “Add Scheduled Task”
  4. ขั้นที่ 4: ใส่ Cron Command เช่น php /var/www/vhosts/example.com/httpdocs/wp-cron.php
  5. ขั้นที่ 5: ตั้งเวลา (นาที, ชั่วโมง, วัน, เดือน, วันในสัปดาห์) โดยใช้ Cron Expression Format
  6. ขั้นที่ 6: ตัวเลือก “Email Output” เพื่อให้ได้รับการแจ้งเตือน Error (ถ้ามี)
  7. ขั้นที่ 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 ทำงานสำเร็จหรือไม่ คุณสามารถ:

  1. ตั้ง “Email Output” ให้ส่ง Email เมื่อ Cron ทำงาน
  2. ดู Cron Log ผ่าน Log Browser ใน Plesk (ตัวเลือก “System Logs” หรือ “Cron Logs”)
  3. ใช้ 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 เป็นประจำ คุณสามารถให้เว็บไซต์ทำงานอัตโนมัติและลดเวลาการจัดการเซิร์ฟเวอร์อย่างมีประสิทธิภาพ