Task Scheduling Laravel ( part 1 )

Jaedsada Chaisorn
Sep 6, 2018 · 2 min read

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

Written by

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

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade