การทำงานของระบบ?Cronjob จะเน้นการทำงานซ้ำ ๆ ในเวลาเดิมเรื่อย ๆ เช่นทำงานทุก ๆ 1 ปี และปีละ 1 ครั้ง อย่างตัวอย่างเรื่องของการส่งอีเมลล์อวยพรวันขึ้นปีใหม่ที่ได้กล่าวไปแล้ว เป็นต้น คราวนี้เราจะมาเจาะลึกในส่วนของวันเวลาที่เราจะสามารถตั้งค่าให้ระบบ?Cronjob นั้นทำงานตามที่เราต้องการ โดยแบ่งออกเป็น 5 ช่องดังต่อไปนี้
- Minute – นาทีที่เราต้องการให้ทำงาน (0-59)
- Hour – ชั่วโมงที่เราต้องการให้ทำงาน (0-23)
- Day of Month – วันในเดือนนั้นๆ (1-31)
- Month – เดือนที่ต้องการ (1-12)
- Day of Week – วันใน 1 อาทิตย์ (0-7 ?โดย 0 และ 7 จะหมายถึงวันอาทิตย์)
จากข้อมูลด้านบน เราต้องตั้งค่าทั้งหมดให้ครบทั้ง 5 ชนิดข้อมูล โดยแต่ละการกำหนดค่า ยังมีการตั้งค่าที่ล้ำลึกซับซ้อนไปมากกว่านี้อีก โดยเราจะอธิบายดังนี้
- ไม่ระบุหรือตั้งค่าให้ทันทุก ๆ ครั้ง เราจะใช้การกำหนดเป็นเครื่องหมาย “*” แทนค่าตัวเลข
- ต้องการระบุตายตัว เช่นอยากให้ทำงานแค่วันที่ 1,2 และ 3 เราสามารถใช้เครื่องหมาย “,” ในการกำหนดค่า จะได้ว่า 1,2,3 เป็นค่าที่ต้องการ
- กำหนดเป็นช่วงของเวลา เช่นต้องการให้ทำงานในนาทีที่ 5 จนถึงนาทีที่ 10 เราสามารถใช้เครื่องหมาย “-“ ในการกำหนดค่า จะได้ว่า 5-10 เป็นค่าที่เรากำหนดค่า
- การกำหนดทุก ๆ ช่วงเวลาที่เป็นค่าตายตัว เช่นกำหนดค่าว่าเป็นทุก ๆ 2 นาที เราสามารถใช้เครื่องหมาย “*/x” ซึ่ง x มีค่าเท่ากับตัวเลขที่ต้องการ จะได้ว่า */2 นั่นเอง
- การกำหนดค่าแบบผสมผสาน เราจะยกตัวอย่างให้เห็นได้ชัดเจนดังนี้
- ต้องการนาทีที่ 1 และนาทีที่ 5
- ต้องการนาที่ที่ 11 ถึงนาทีที่ 15
- ต้องการทุก ๆ 2 นาที ตั้งแต่นาทีที่ 3o จนถึงนาทีที่ 59
จากตัวอย่างด้านบนนี้ เป็นการเจาะลึก การตั้งค่า?Cronjob อย่างแท้จริง เพราะว่าเป็นการตั้งค่าแบบผสมผสาน และเอารูปแบบการตั้งค่าต่าง ๆ มาใช้งานร่วมกัน เพื่อให้เข้าใจคำสั่งในการตั้งค่ามากยิ่งขึ้นนั่นเอง การตั้งค่าที่ได้คือ?1,5,11-15,30-59/2 (สังเกตุดูให้ดี จะไม่มีช่องว่างนะครับ)
และนี่เป็นการตั้งค่าในรูปแบบต่าง ๆ เพื่อให้?Cronjob นั้นทำงานตามวันเวลาที่เราสามารถกำหนดได้หลากหลายรูปแบบ ตามลักษณะงานนั่นเอง
ตั้งค่า Cronjobs
บนโฮสเรามีหลายเวอชั่น เช่น php5.6 , 7.0 , 7.2 , 7.3 การตั้งค่า cron จึงต้องระบุเวอชั่น PHP ที่ต้องการใช้งาน เช่น
/usr/local/php56/bin/php -q "/home/user/domains/yourdomain.com/public_html/path/cron.php"
/usr/local/php70/bin/php -q "/home/user/domains/yourdomain.com/public_html/path/cron.php"
/usr/local/php72/bin/php -q "/home/user/domains/yourdomain.com/public_html/path/cron.php"
/usr/local/php73/bin/php -q "/home/user/domains/yourdomain.com/public_html/path/cron.php"