สร้าง Crontab Cron job เพื่อรัน php ตามเวลาที่ต้องการ

Crontab เป็นโปรแกรมหนึ่งบน Linux ทุกสกุลที่มีเครื่องมือนี้ให้ใช้ โดยไว้สำหรับทำให้เรียกโปรแกรม หรือ command อื่นๆ ทำงานอัตโนมัตตามเวลา ความถึ่ที่เราต้องการได้ เช่นโปรแกรมเทียบเวลาทุกวัน หรือ ทำโปรแกรม backup ไฟล์ทุกๆวันไว้ว่าจะเขียนด้วย shell หรือ python หรือ php ก็สามารถใช้คู่กับ crontab ได้


Crontab syntax :-

* * * * * command to be executed

รูปแบบทั่วไป
# m h dom mon dow command
โดย จะอธิบายไว้ด้านล่าง
- - - - -
| | | | |
| | | | +----- dow วันในสัปดาห์มีค่าเป็วเลขจาก (0 - 6) ( โดยนับ 0 เป็นวันอาทิตย์)
| | | +------- mon เดือน (1 - 12)
| | +--------- dom วันในเดือน (1 - 31)
| +-----------  h ชัวโมง (0 - 23)
+------------- m นาที (0 - 59)  ถ้าต้องการระยะเวลาน้อยกว่า 1 นาที ให้ใส่เป็นเศษส่วนด้วยนี้ เช่น ทุกเครื่องนาที 1/2

แก้ไขไฟล์ crontab ด้วย vi
ก่อนเพิ่มงานเข้าไปใน crontab ลองใช้ คำสั่ง crontab -l เพื่มดูว่ามีงานอะไรอยู่บ้างแล้ว
เพิ่มงาน เข้าไปใน crontab
พิมพ์

crontab -e 

ระบบจะเปิด editor ประจำตัวของระบบขึ้นมา ผมยกตัวอย่างใน FreeBSD
จะใช้ โปรแกรม vi ในการแก้ไขไฟล์นี้
กด i เพิ่ม เพิ่มงาน ตาม syntax ข้างบน
เช่น ผมต้องการให้รัน ไฟล์ https://www.mindphp.com/mindphp.php ทุก นาที
ก็ใช้คำสั่ง

* * * * * fetch http://www.mindphp.com/mindphp.php 


หรือ รัน ทุกๆ วัน เวลา ตี

4 0 4 * * * fetch http://www.mindphp.com/mindphp.php


เสร็จแล้ว กดปุ่ม Esc ตามด้วย :wq เพื่อ save และออกจากโปรแกรม vi
ลองเช็คว่า ที่เรากำหนดไป ทำงานหรือเปล่า check log จาก

tail -g /var/log/cron 

ดูว่ามี process หรือไม่

fetch เป็นโปรแกรม ดึงไฟล์ (เอามาให้มันเรียกไฟล์ใน Server เราเอง)
หรือจะใช้ ให้ php รัน แบบ command ก็ได้
เช่น

0 4 * * * /usr/local/bin/php /home/mindphp/www/mindphp.com

จะเห็นว่า Cron บน Linux มีประโยชน์มากๆ สำหรับการตั้งโปรแกรมให้ทำงานซ้ำๆ นอกจากนี้บน Windows ก็มีต่อเพิ่มเติมได้ที่นี่ การตั้งค่า Task Scheduler ให้โปรแกรมทำงานอัตโนมัติ ทำงานซ้ำๆตามเวลาที่กำหนด

สำหรับต้องการใช้ทำงานในความถี่หน้อยกว่า 1 นาที่ เราสามารถใช้สัดส่วนได้ เช่นทุก 30 วินาที่ ใช้ */2

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
VDO - วิธีการกำหนดค่า Customer Payment Term [ADMIN]
โดย MBMoo ศ 17 พ.ย. 2023 9:56 am บอร์ด PP systems (Main)
0
4
ศ 17 พ.ย. 2023 9:56 am โดย MBMoo View Topic VDO - วิธีการกำหนดค่า Customer Payment Term [ADMIN]
รีวิวคอมโน้ตบุ๊ค ASUS VIVOBOOK 16 โน้ตบุ๊คน้ำหนักเบาเอาไว้ทำงาน
โดย Thanapoom1514 พฤ 16 พ.ย. 2023 8:45 pm บอร์ด ถาม - ตอบ คอมพิวเตอร์
1
685
พฤ 21 ธ.ค. 2023 1:00 pm โดย prmindphp View Topic รีวิวคอมโน้ตบุ๊ค ASUS VIVOBOOK 16 โน้ตบุ๊คน้ำหนักเบาเอาไว้ทำงาน
R - ไฟล์ Script สำหรับเช็คข้อมูลอัพเดทใน API
โดย tsukasaz พฤ 16 พ.ย. 2023 5:58 pm บอร์ด สมาธิ คาร์ เร้นท์ทัล - Developer
0
12
พฤ 16 พ.ย. 2023 5:58 pm โดย tsukasaz View Topic R - ไฟล์ Script สำหรับเช็คข้อมูลอัพเดทใน API
สอบถาม การปิดโฆษณาบน Anydesk
โดย Thanavat_n พฤ 16 พ.ย. 2023 12:56 pm บอร์ด ถาม - ตอบ คอมพิวเตอร์
1
955
พ 22 พ.ย. 2023 3:14 pm โดย Thanavat_n View Topic สอบถาม การปิดโฆษณาบน Anydesk
สอบถาม skype ไม่ได้ยินเสียงคนพูดครับ
โดย Thanapoom1514 พฤ 16 พ.ย. 2023 12:51 pm บอร์ด ถาม - ตอบ คอมพิวเตอร์
2
619
พฤ 28 ธ.ค. 2023 1:01 pm โดย noncup302 View Topic สอบถาม skype ไม่ได้ยินเสียงคนพูดครับ
อยากทำ Load Balancing สำหรับเว็บไซต์ Joomla บน hosting
โดย SUpapon15 พ 15 พ.ย. 2023 3:46 pm บอร์ด สอบถามปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS, CRM
0
644
พ 15 พ.ย. 2023 3:46 pm โดย SUpapon15 View Topic อยากทำ Load Balancing สำหรับเว็บไซต์ Joomla บน hosting
Khon Kaen Web Design
โดย Anonymous อ 14 พ.ย. 2023 5:15 pm บอร์ด Programming - PHP
1
680
อ 12 ธ.ค. 2023 1:16 pm โดย Dala View Topic Khon Kaen Web Design
ข้อดีและจุดเลือกของแบตเตอรี่ลิเธียม
โดย GreatBattery จ 13 พ.ย. 2023 3:05 pm บอร์ด Share Knowledge
0
403
จ 13 พ.ย. 2023 3:05 pm โดย GreatBattery View Topic ข้อดีและจุดเลือกของแบตเตอรี่ลิเธียม