Task Scheduling Laravel แบบเร็วๆ

Jaedsada Chaisorn
2 min readSep 6, 2018

--

Cron Jobs หรือ Crontab คือคำสั่งที่ระบุไว้เพื่อให้ทำตามเวลาที่กำหนด เหมาะสำหรับงานบางอย่างที่ต้องทำซ้ำๆหลายๆครั้ง อาจจะเป็นทุกๆชั่วโมง ทุกๆวันหรือทุกๆเดือนก็ได้ เช่น การสั่งให้Server ทำการ Backup ทุกๆสัปดาห์

Option และ Crontab ประกอบด้วย

- crontab filename การนำเอาคำสั่ง crontab จากไฟล์อื่น

- crontap -e แก้ไข crontab ปัจจุบัน

- crontab -l ดูคำสั่ง crontab ทั้งหมดที่มีอยู่

- crontab -r ลบคำสั่ง crontab ที่มีทั้งหมด

- crontab -u user คำสั่งจากผู้ดูแลระบบเท่านั้น เพื่อใช้ดู แก้ไข และลบ crontab ของ user แต่ละคน

รูปแบบของคำสั่ง crontab มีทั้งหมด 6 fields ดังนี้

1 = minute มีค่า 0–59 เวลาเป็นนาที จะสั่งให้คำสั่งที่กำหนดทำงานทันที่เมื่อถึงนาทีที่กำหนด
2 = hour มีค่า 0–23 เวลาเป็นชั่วโมง จะสั่งให้คำสั่งที่กำหนดทำงานทันที่เมื่อถึงชั่วโมงที่กำหนด
3 = day มีค่า 1–31 เวลาเป็นวัน จะสั่งให้คำสั่งที่กำหนดทำงานทันที่เมื่อถึงวันที่กำหนด
4 = month มีค่า 1–12 เวลาเป็นเดือน จะสั่งให้คำสั่งที่กำหนดทำงานทันที่เมื่อถึงเดือนที่กำหนด
5 = weekday มีค่า 0–6 วันของแต่ละสัปดาห์
6 = command เราสามารถกำหนดคำสั่งได้มากมาย รวมทั้ง script ต่าง ๆ ตามที่เราต้องการ

จากการที่ส่วนตัวเขียนเว็บโดยใช้ Laravel เลยพบว่า Laravel 5.6 มี Task Scheduling สำหรับตั้งเวลาเพื่อให้ทำงานตามที่ต้องการ

เริ่มต้นด้วยการที่เรา สร้าง โปรเจ็ค Laravel ขึ้นมาโดยใช้คำสั่ง

composer create-project --prefer-dist laravel/laravel testCronjob "5.6.*"

ต่อด้วย คำสั่ง

composer install

จากนั้น รันโปรเจ็คโดยใช้คำสั่ง

php artisan serve

จากนั้น สร้าง console สำหรับ รันคำสั่ง cronjob

php artisan make:command CronJob

หลังจากรัน คำสั่ง จะได้ ไฟล์ชื่อ Cronjob.php ใน app/Console/Commands/

app/Console/Command/Cronjob.php

ถัดไป , เปิด App\Console\Kernel.php และเปลี่ยนตามนี้

app/Console/Kernel.php

สามารถกำหนดเวลาที่ต้องการได้ โดยสามารถดูได้จากใน

เพียงเท่านี้ Task schedule ของเราก็ได้ทำการ Setup ไว้เรียบร้อย

เราสามารถทดลองได้ทันทีโดยใช้คำสั่ง

php artisan list

และตามด้วยคำสั่งที่ได้ตั้งไว้ใน Command/Cronjob

app/Console/Command/Cronjob.php

ต่อจากนั้นก็สามารถใช้คำสั่งที่เราตั้งไว้ได้เลยดังนี้

php artisan Cronjob

เพียงแค่นี้ ก็เรียบร้อย

--

--

Jaedsada Chaisorn

ปืน Web Dev พูดไม่ค่อยรู้เรื่องเท่าไร เขียนก็ไม่ได้เลยเช่นกัน