PHP Scheduler นี้คือคลาสคำสั่งที่จะช่วยให้คุณกำหนดเวลาทำงานต่างๆในไฟล์ PHP ได้ง่ายขึ้น, ลดการใช้ cron job ที่มากับผู้ให้บริการ web hosting.
Download หรือติดตั้งผ่าน Composer
อ้างอิง เอกสาร API
เนื่องจาก PHP Scheduler นั้นโดยตัวมันเองไม่ใช่ cron job, cron tab มันไม่สามารถสั่งตัวมันเองให้รันตามเวลาได้โดยไม่มีการเรียกใช้งาน. ยกตัวอย่างเช่น กำหนดเวลาทำงานไว้เมื่อ 13 น. ในหน้าเว็บ index.php แล้วไม่มีการเรียกดูหรือเรียกใช้งานหน้าเว็บ index.php นั้นเลย มันก็ไม่สามารถทำงานได้ จนกว่าจะมีผู้เข้าชมหน้าเว็บนั้นหรือมีการเรียกใช้งานนั้น. ดังนั้นมันจึงอาจจำเป็นต้องพึ่งพา cron job ในกรณีที่ต้องการให้กำหนดเวลาทำงานแม่นยำขึ้น หรือหากหน้าเว็บมีผู้เข้าชมตลอดทั้งวันก็สามารถแทรกโค้ดไว้ในหน้านั้นๆได้.
เพื่อความแม่นยำในการเรียกใช้งาน เมื่อเขียนโค้ดกำหนดเวลาทำงานเสร็จแล้ว ให้กำหนด cron job เรียกใช้ไฟล์นั้น โดยความถี่ที่มากที่สุด ที่แนะนำก็คือ ทุกวันและทุกชั่วโมง เพื่อไม่ให้ server ทำงานหนักจนเกินไป.
ตัวอย่างการเขียนกำหนดเวลา
$PhpSchedule = new \Rundiz\PhpSchedule\PhpSchedule();
$PhpSchedule->add('unique-name', 'https://mysite.localhost/page/to/works', ['12', '15']);// ทำงานเมื่อ 12 น. (เที่ยง) และ 15 น. (บ่ายสาม)
$PhpSchedule->run();
ใน method add นั้นค่าแรกให้กำหนดชื่อของงาน โดยจะต้องไม่ซ้ำกับที่มีอยู่ และใช้ภาษาอังกฤษกับตัวเลข มิฉะนั้นจะเกิดการแสดงข้อผิดพลาดขึ้น ก็ให้แก้ไขให้ถูกต้อง. ค่าที่สองคือ URL ของหน้าเว็บที่จะเรียกไป หรือจะเป็น call back function ก็ได้. ค่าที่สามคือเวลาในการทำงาน กำหนดเป็นเลขชั่วโมงภายใน array โดยเป็นเลขแบบ 24 ชม คือ 00 หมายถึงเที่ยงคืน, 12 หมายถึงเที่ยงวัน, 01 หมายถึงตีหนึ่ง, 13 หมายถึงบ่ายโมง เป็นต้น.
ตัวอย่างการกำหนดให้ทำงานเป็น callback function
$PhpSchedule = new \Rundiz\PhpSchedule\PhpSchedule();
$PhpSchedule->add('unique-name1', 'myFunction', ['12', '15']);
$PhpSchedule->add('unique-name2', ['myStaticClass', 'myStaticMethod'], ['12', '15']);
$MyClass = new MyClass();
$PhpSchedule->add('unique-name3', [$MyClass, 'myMethod'], ['12', '15']);
$PhpSchedule->run();
ทั้งหมดนี้เมื่อกำหนดเวลางานเสร็จแล้วให้สั่งทำงานด้วย method run.
2 comments on “กำหนดเวลาทำงานด้วย PHP Scheduler”
ใช้กับ CodeIgniter ได้ไหมครับ
และใช้ยังไงครับ
https://www.codeigniter.com/user_guide/general/creating_libraries.html
https://forum.codeigniter.com/thread-49644.html
https://stackoverflow.com/questions/45009712/load-external-library-in-codeigniter
https://stackoverflow.com/questions/13741917/how-to-use-composer-packages-in-codeigniter