ค้นหาเว็บไซต์

วิธีเรียกใช้สคริปต์ PHP ในฐานะผู้ใช้ปกติด้วย Cron


Cron เป็นยูทิลิตี้อันทรงพลังสำหรับการตั้งเวลางานในระบบปฏิบัติการแบบ Unix รวมถึง Linux โดยทำงานเป็น daemon และสามารถใช้เพื่อกำหนดเวลางาน เช่น คำสั่งหรือเชลล์สคริปต์เพื่อทำการสำรองข้อมูล กำหนดเวลาการอัปเดต และอื่นๆ อีกมากมาย ซึ่งทำงานเป็นระยะและโดยอัตโนมัติในเบื้องหลังตามเวลา วันที่ หรือช่วงเวลาที่กำหนด

ข้อจำกัดประการหนึ่งของ cron คือถือว่าระบบจะทำงานตลอดไป ดังนั้นจึงเหมาะสำหรับเซิร์ฟเวอร์อื่นที่ไม่ใช่เครื่องเดสก์ท็อป นอกจากนี้ คุณยังสามารถกำหนดเวลางานตามเวลาที่กำหนดหรือในภายหลังได้โดยใช้คำสั่ง 'at' หรือ 'batch' แต่งานจะทำงานเพียงครั้งเดียวเท่านั้น (จะไม่เกิดซ้ำ)

การอ่านที่แนะนำ: วิธีกำหนดเวลางานโดยใช้ Anacron บน Linux

ในบทความนี้ เราจะอธิบายวิธีอนุญาตให้ผู้ใช้ระบบทั่วไปเรียกใช้หรือรันสคริปต์ PHP ผ่านตัวกำหนดเวลางาน cron ใน Linux

คุณสามารถกำหนดเวลางานได้โดยใช้โปรแกรม crontab (CRON TABle) ผู้ใช้แต่ละคนสามารถมีไฟล์ crontab ของตัวเองซึ่งประกอบด้วยหกฟิลด์สำหรับกำหนดงาน:

  • นาที – ยอมรับค่าระหว่าง 0-59
  • ชั่วโมง – ยอมรับค่าระหว่าง 0-23
  • วันของเดือน – เก็บค่าระหว่าง 1-31
  • เดือนของปี – เก็บค่าระหว่าง 1-12 หรือ Jan-Dec คุณสามารถใช้ตัวอักษรสามตัวแรกของชื่อแต่ละเดือนได้ เช่น Jan หรือ Jun
  • วันในสัปดาห์ – เก็บค่าระหว่าง 0-6 หรือวันอาทิตย์-วันเสาร์ นอกจากนี้ คุณยังใช้ตัวอักษรสามตัวแรกของชื่อแต่ละวันได้ เช่น วันอาทิตย์หรือวันพุธ
  • คำสั่ง – คำสั่งที่จะดำเนินการ

หากต้องการสร้างหรือแก้ไขรายการในไฟล์ crontab ของคุณเอง ให้พิมพ์:

crontab -e

และหากต้องการดูรายการ crontab ทั้งหมดของคุณ ให้พิมพ์คำสั่งนี้ (ซึ่งจะพิมพ์ไฟล์ crontab ไปยังเอาต์พุต std):

crontab -l

อย่างไรก็ตาม หากคุณเป็นผู้ดูแลระบบและต้องการรันสคริปต์ PHP ในฐานะผู้ใช้รายอื่น คุณจะต้องกำหนดเวลาสคริปต์ดังกล่าวในไฟล์ /etc/crontab หรือไฟล์ crontab ของผู้ใช้รูทซึ่งรองรับไฟล์พิเศษสำหรับการระบุ ชื่อผู้ใช้:

sudo vi /etc/crontab

และกำหนดเวลาให้สคริปต์ PHP ของคุณดำเนินการเช่นนี้ โดยระบุ ชื่อผู้ใช้ หลังส่วนกำหนดเวลา

0 0 * * * tecmint /usr/bin/php -f /var/www/test_site/cronjobs/backup.php

รายการข้างต้นรันสคริปต์ /var/www/test_site/cronjobs/backup.php ทุกวันเวลาเที่ยงคืนในฐานะผู้ใช้ tecmint

หากคุณต้องการรันสคริปต์ด้านบนโดยอัตโนมัติทุกๆ สิบนาที ให้เพิ่มรายการต่อไปนี้ในไฟล์ crontab

*/10 * * * * tecmint /usr/bin/php -f /var/www/test_site/cronjobs/backup.php

ในตัวอย่างข้างต้น */10 * * * * แสดงถึงเวลาที่งานควรจะเกิดขึ้น ตัวเลขแรกแสดง นาที – ในสถานการณ์นี้ ทุกๆ "สิบ" นาที ส่วนตัวเลขอื่นๆ จะแสดง ชั่วโมง วัน เดือน และวันในสัปดาห์ตามลำดับ

คุณอาจต้องการอ่านบทความที่เกี่ยวข้องต่อไปนี้

  1. การใช้เชลล์สคริปต์เพื่อทำให้งานบำรุงรักษาระบบ Linux เป็นแบบอัตโนมัติ
  2. 12 การใช้งาน Commandline PHP ที่มีประโยชน์ ผู้ใช้ Linux ทุกคนต้องรู้
  3. วิธีเรียกใช้โค้ด PHP ใน Linux Terminal
  4. 30 คำสั่ง Linux ที่มีประโยชน์สำหรับผู้ดูแลระบบ

นั่นคือทั้งหมด! เราหวังว่าคุณจะพบว่าบทความนี้มีประโยชน์ หากคุณมีคำถามหรือแนวคิดเพิ่มเติมที่จะแบ่งปันเกี่ยวกับหัวข้อนี้ โปรดใช้แบบฟอร์มความคิดเห็นด้านล่าง