สร้าง 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

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
คำสั่ง SQL วิธีแปลงค่าตัวเลข เช่น 1703618219 ซึ่งเป็นค่า Unix timestamp (จำนวนวินาทีนับตั้งแต่วันที่ 1 มกราคม ค.ศ. 1970)
โดย mindphp พ 27 ธ.ค. 2023 1:12 pm บอร์ด SQL Knowledge
0
1619
พ 27 ธ.ค. 2023 1:12 pm โดย mindphp View Topic คำสั่ง SQL วิธีแปลงค่าตัวเลข เช่น 1703618219 ซึ่งเป็นค่า Unix timestamp (จำนวนวินาทีนับตั้งแต่วันที่ 1 มกราคม ค.ศ. 1970)
สอบถามกดดูตารางใน phpmyadmin แล้วขึ้น error #1932 - Table 'table_name' doesn't exist in engine
โดย eange08 พ 27 ธ.ค. 2023 12:29 pm บอร์ด SQL - Database
7
2723
พ 27 ธ.ค. 2023 1:39 pm โดย eange08 View Topic สอบถามกดดูตารางใน phpmyadmin แล้วขึ้น error #1932 - Table 'table_name' doesn't exist in engine
R - mdsoft_jnk_delete_sale_purchase_sql - ลบประวัติเก่าๆ
โดย MBMoo พ 27 ธ.ค. 2023 9:33 am บอร์ด JNK - Developer
0
3
พ 27 ธ.ค. 2023 9:33 am โดย MBMoo View Topic R -   mdsoft_jnk_delete_sale_purchase_sql - ลบประวัติเก่าๆ
Troubleshooting Tips for Resolving Computer Connectivity Issues and Slow Internet
โดย sunil อ 26 ธ.ค. 2023 6:10 pm บอร์ด ถาม - ตอบ คอมพิวเตอร์
0
429
อ 26 ธ.ค. 2023 6:10 pm โดย sunil View Topic Troubleshooting Tips for Resolving Computer Connectivity Issues and Slow Internet
แนะนำ 3 ที่เที่ยวสวนผึ้ง วิวสวย อากาศดี เดินทางง่าย ใกล้กรุง พร้อมวิธีการเดินทาง
โดย vibeday อ 26 ธ.ค. 2023 2:42 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
2
650
พ 27 ธ.ค. 2023 12:28 am โดย vibeday View Topic แนะนำ 3 ที่เที่ยวสวนผึ้ง วิวสวย อากาศดี เดินทางง่าย ใกล้กรุง พร้อมวิธีการเดินทาง
ใครเคยเจอปัญหาบ้างไหม
โดย mindphp จ 25 ธ.ค. 2023 3:39 pm บอร์ด ถาม - ตอบ คอมพิวเตอร์
0
518
จ 25 ธ.ค. 2023 3:39 pm โดย mindphp View Topic ใครเคยเจอปัญหาบ้างไหม
สอบถามการเพิ่ม URL โดเมนของแอพ
โดย flook จ 25 ธ.ค. 2023 12:28 pm บอร์ด Programming - PHP
4
611
พ 03 ม.ค. 2024 9:52 am โดย flook View Topic สอบถามการเพิ่ม URL โดเมนของแอพ
สอบถามเมลว่าใช่ของ metamask หรือไม่
โดย Anonymous ส 23 ธ.ค. 2023 9:01 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
432
ส 23 ธ.ค. 2023 9:01 pm โดย บุคคลทั่วไป View Topic สอบถามเมลว่าใช่ของ metamask หรือไม่