Có thể bạn không biết, khoa học đã chứng minh: những người lười biếng sẽ “giải cứu thế giới”. Thiệt đó nha
Lệnh php artisan schedule:run là lệnh được cung cấp bởi Laravel. Khi lệnh này được gọi tới, hàm schedule() sẽ được thực thi.Cụ thể, mình có 1 project đặt tại thư mục Documents/example, và mình muốn kiểm tra việc đặt lịch trong schedule mỗi phút 1 lần, và in ra kết quả trong file test.txt. Mình sẽ thếm dòng lệnh sau:
* * * * * php ~/Documents/example/artisan schedule:run >> test.txtBước 2: Định nghĩa schedule
Schedule được định nghĩa trong function schedule() của file Kernel.php. Bạn có thể đặt lịch cho cả Closure và Artisan Commands.
Đang xem: Task scheduler là gì, tự Động hóa công việc của bạn với task scheduler
Ví dụ sau sẽ giúp mình đặt lịch in ra dòng chữ “Hello” 5 phút 1 lần:
protected function schedule(Schedule $schedule){ $schedule->call(function () { echo “Hello
” })->everyFiveMinutes();}Và đây là kết quả của file test.txt trong vòng 10 phút:
Trong 10 phút này, mỗi phút Cron sẽ thực thi schedule:run một lần. Nhưng do schedule() định nghĩa in ra “Hello” 5 phút 1 lần, nên sau 10 phút, ta chỉ in được 2 chữ “Hello”.
Xem thêm: Đẩy Mạnh Cho Vay Tiêu Dùng Là Gì ? Vay Tín Chấp Tiêu Dùng Là Gì
Bạn cũng có thể đặt lịch cho artisan commands trong hàm schedule(). Ví dụ như, đặt lịch thực hiện config:cache mỗi ngày 1 lần:
protected function schedule(Schedule $schedule){ $schedule->command(“config:cache”)->everyFiveMinutes();}Các tùy chọn tần suất Schedule
https://laravel.com/docs/5.5/scheduling#schedule-frequency-options
Cách 2: Tạo command và sử dụng Cron để đặt lịch
Bước 1: Tạo commandĐể có thể đặt lịch rõ ràng cho từng tác vụ, chúng ta sẽ tạo command để cron thực hiện định kì.
Xem thêm: Phương Pháp Sắc Ký Là Gì ? Cách Sử Dụng Sắc Ký Cột Trong Thí Nghiệm
Ví dụ, mình sẽ sử dụng lệnh make:command sau để tạo command HelloWorld:
php artisan make:command HelloWorldCâu lệnh sẽ tạo ra một file HelloWorld.php trong thư mục appConsoleCommands.
Trong đó, $signature để định nghĩa cú pháp gọi đến lệnh và $description sẽ mô tả tác vụ được thực thi khi lệnh được gọi đến. Hàm handle() thì dùng để định nghĩa nội dung tác vụ, hàm này sẽ được gọi đến khi lệnh được thực thi. Dưới đây là một ví dụ:
namespace AppConsoleCommands;use IlluminateConsoleCommand;class HelloWorld extends Command{ /** * The name and signature of the console command. * *