Lập lịch tác vụ là một kỹ thuật hữu ích để tự động hóa các tác vụ lặp đi lặp lại khác nhau dựa trên lịch trình. Những nhiệm vụ hoặc công việc như vậy có thể mang tính chất quan trọng [chẳng hạn như sao lưu cơ sở dữ liệu] hoặc có thể đơn giản như gửi email hàng tuần cho chính bạn hoặc khách hàng của bạn. Chạy thủ công các công việc như vậy có thể trở nên tẻ nhạt rất nhanh, vì vậy giải pháp tốt hơn là tự động hóa và giám sát chúng để chúng có thể chạy kịp thời một cách có thể dự đoán được
Cách truyền thống để lên lịch tác vụ trên các ứng dụng được triển khai trên máy chủ Linux là thông qua tiện ích cron. Tuy nhiên, hệ thống như vậy phải được triển khai riêng biệt với ứng dụng, điều này có thể khá hạn chế
Laravel cung cấp một cách tiếp cận toàn diện để lập lịch tác vụ thông qua bộ lập lịch lệnh của nó, cho phép bạn lên lịch các tác vụ trong chính ứng dụng đó. Trong hướng dẫn này, chúng ta sẽ khám phá cách tạo các công việc theo lịch trình trong Laravel và chúng tôi cũng sẽ triển khai một giải pháp giám sát để giúp bạn thông báo kịp thời nếu một tác vụ theo lịch trình không thành công hoặc không chạy như mong đợi
điều kiện tiên quyết
Trước khi tiếp tục với bài viết này, hãy đảm bảo rằng bạn có quyền truy cập vào máy Linux đã cài đặt các phiên bản Cron, PHP và Composer gần đây
Bạn cũng nên tạo một dự án Laravel mới để có thể kiểm tra các đoạn mã trong hướng dẫn này. Giả sử PHP và Composer đã được cài đặt, bạn có thể tiến hành tạo dự án Laravel bằng lệnh sau
composer create-project laravel/laravel
Bắt đầu
Dự án Laravel mới của bạn nên có cấu trúc như sau
.
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
Đối với hướng dẫn này, chúng tôi chỉ quan tâm đến thư mục
Laravel Framework 9.33.0
. . .
about Display basic information about your application
clear-compiled Remove the compiled class file
view:cache Compile all of the application's Blade templates
view:clear Clear all compiled view files
5 vì tất cả các công việc được lên lịch trong Laravel được xác định trong tệp Laravel Framework 9.33.0
. . .
about Display basic information about your application
clear-compiled Remove the compiled class file
view:cache Compile all of the application's Blade templates
view:clear Clear all compiled view files
6Hãy tiếp tục và mở tệp bằng lệnh sau
nano app\Console\Kernel.php
command["inspire"]->hourly[];
}
/**
* Register the commands for the application.
*
* @return void
*/
protected function commands[]
{
$this->load[__DIR__ . "/Commands"];
require base_path["routes/console.php"];
}
}
Lưu ý hàm
Laravel Framework 9.33.0
. . .
about Display basic information about your application
clear-compiled Remove the compiled class file
view:cache Compile all of the application's Blade templates
view:clear Clear all compiled view files
7 được đánh dấu ở trên. Đó là nơi bạn có thể lên lịch cho các tác vụ của mình và Laravel cung cấp một ví dụ về cách nó được thực hiện trong hàm$schedule->command["inspire"]->hourly[];
Dòng này được chú thích theo mặc định, nhưng bạn nên bỏ ghi chú trước khi tiếp tục. Biến
Laravel Framework 9.33.0
. . .
about Display basic information about your application
clear-compiled Remove the compiled class file
view:cache Compile all of the application's Blade templates
view:clear Clear all compiled view files
8 là một thể hiện của lớp Laravel Framework 9.33.0
. . .
about Display basic information about your application
clear-compiled Remove the compiled class file
view:cache Compile all of the application's Blade templates
view:clear Clear all compiled view files
9 được tích hợp trong Laravel. Phương pháp $schedule->command['inspire']->everyMinute[];
0 của nó sẽ lên lịch hiển thị một trích dẫn đầy cảm hứng trong bảng điều khiểnĐể xem danh sách tất cả các lệnh Artisan có sẵn, hãy chạy lệnh bên dưới trong thiết bị đầu cuối từ gốc dự án của bạn
Bạn sẽ quan sát danh sách lệnh cùng với mô tả ngắn gọn về những gì họ làm
Laravel Framework 9.33.0
. . .
about Display basic information about your application
clear-compiled Remove the compiled class file
view:cache Compile all of the application's Blade templates
view:clear Clear all compiled view files
Sau khi chọn một lệnh, bạn phải chỉ định tần suất bạn muốn thực hiện lệnh đó. Trong ví dụ mặc định, phương thức
$schedule->command['inspire']->everyMinute[];
1 thực thi lệnh $schedule->command['inspire']->everyMinute[];
2 mỗi giờ. Đối với mục đích trình diễn, hãy thay đổi nó thành $schedule->command['inspire']->everyMinute[];
3 để bạn có thể thấy hiệu quả của việc lên lịch tác vụ nhanh hơn nhiều$schedule->command['inspire']->everyMinute[];
Sau khi thực hiện thay đổi, hãy gọi bộ lập lịch bằng cách thực hiện lệnh bên dưới
Lệnh
$schedule->command['inspire']->everyMinute[];
4 sẽ duyệt qua tất cả các tác vụ đã lên lịch và xác định xem Laravel có nên thực thi tác vụ dựa trên thời gian hiện tại hay không. Ví dụ: $schedule->command['inspire']->everyMinute[];
1 sẽ lên lịch thực hiện một nhiệm vụ vào giờ đánh dấu [xx. 00] trong khi $schedule->command['inspire']->everyMinute[];
6 thực hiện công việc khi thời gian hiện tại là xx. x0, xx. x5, xx. 10, v.v. Nếu không có tác vụ nào hiện được lên lịch để thực thi, đầu ra sau sẽ được in ra thiết bị đầu cuốiINFO No scheduled commands are ready to run.
Tuy nhiên, vì chúng tôi đang sử dụng
$schedule->command['inspire']->everyMinute[];
3 trong ví dụ của mình, bạn nên quan sát rằng tác vụ được thực thi và đầu ra sau đây được in ra thiết bị đầu cuối 2022-10-06 21:42:39 Running ['artisan' inspire] ...................2,878ms DONE
⇂ '/usr/bin/php8.1' 'artisan' inspire > '/dev/null' 2>&1
Lưu ý rằng thông báo tường trình mô tả lệnh đã thực hiện được in nhưng kết quả không được hiển thị. Đó là bởi vì Laravel tự động bỏ qua đầu ra của một tác vụ đã lên lịch bằng cách chuyển tiếp nó tới
$schedule->command['inspire']->everyMinute[];
8 [xem dòng thứ hai của đầu ra ở trên] vì chúng thường chạy trong nềnNếu bạn cần sử dụng đầu ra của nhiệm vụ đã lên lịch của mình, bạn có thể đặt nó vào một tệp để kiểm tra sau thông qua phương pháp
$schedule->command['inspire']->everyMinute[];
9$schedule
->command["inspire"]
->everyMinute[]
->sendOutputTo["scheduler-output.log"];
Sau khi thực hiện thay đổi trên, hãy gọi lại bộ lập lịch và xem nội dung của tệp
INFO No scheduled commands are ready to run.
0 được tạo sau đó.
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
0Lưu ý rằng phương thức
$schedule->command['inspire']->everyMinute[];
9 sẽ ghi đè nội dung của đối số tệp của nó cho mỗi lần gọi. Nếu điều này không được mong muốn, bạn có thể sử dụng phương pháp INFO No scheduled commands are ready to run.
2 nối đầu ra lệnh vào cuối tệp để thay thế.
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
1Chạy bộ lập lịch một vài lần và quan sát rằng tệp không còn bị ghi đè nữa
.
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
2Một vấn đề với lệnh
$schedule->command['inspire']->everyMinute[];
4 là nó chỉ gọi bộ lập lịch một lần, điều đó có nghĩa là các tác vụ đã lên lịch chỉ được thực hiện một lần. Để đảm bảo các tác vụ được chạy theo lịch trình, bộ lập lịch trình cần phải chạy liên tục và điều này đạt được bằng cách sử dụng lệnh INFO No scheduled commands are ready to run.
4 thay vì như hình bên dưới.
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
3Lệnh này sẽ chạy ở nền trước và gọi lệnh
$schedule->command['inspire']->everyMinute[];
4 mỗi phút cho đến khi lệnh này kết thúc bằng cách nhấn INFO No scheduled commands are ready to run.
6. Nó rất hữu ích để kiểm tra mã của bạn trong quá trình phát triển, do đó bạn không phải gọi trình lập lịch trình theo cách thủ công mỗi lầnTrong môi trường sản xuất, bạn nên thực thi lịch trình ở chế độ nền thông qua Công việc định kỳ như hình bên dưới
.
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
4Lập kế hoạch lệnh hệ thống
Ngoài các lệnh Artisan, bạn cũng có thể lên lịch thực hiện bất kỳ lệnh hệ thống nào bằng phương thức
INFO No scheduled commands are ready to run.
7 như sau.
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
5Các phương pháp
$schedule->command['inspire']->everyMinute[];
9 và INFO No scheduled commands are ready to run.
2 đã thảo luận trước đó cũng có thể được sử dụng để ghi lại đầu ra của các lệnh hệ thốngChức năng lập lịch trình
Nếu bạn cần lên lịch một chức năng trong Laravel, bạn có thể sử dụng phương thức
2022-10-06 21:42:39 Running ['artisan' inspire] ...................2,878ms DONE
⇂ '/usr/bin/php8.1' 'artisan' inspire > '/dev/null' 2>&1
0 và chuyển vào một bao đóng bao hàm chức năng như sau.
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
6Công việc đã lên lịch sẽ chạy hàng ngày trong ví dụ này và xóa tất cả người dùng không hoạt động
Ngoài việc lên lịch đóng cửa, bạn cũng có thể lên lịch với phương thức
2022-10-06 21:42:39 Running ['artisan' inspire] ...................2,878ms DONE
⇂ '/usr/bin/php8.1' 'artisan' inspire > '/dev/null' 2>&1
0. Đây là các lớp PHP chứa phương thức 2022-10-06 21:42:39 Running ['artisan' inspire] ...................2,878ms DONE
⇂ '/usr/bin/php8.1' 'artisan' inspire > '/dev/null' 2>&1
2. Khi một phiên bản mới của lớp được cung cấp cho phương thức 2022-10-06 21:42:39 Running ['artisan' inspire] ...................2,878ms DONE
⇂ '/usr/bin/php8.1' 'artisan' inspire > '/dev/null' 2>&1
0, phương thức 2022-10-06 21:42:39 Running ['artisan' inspire] ...................2,878ms DONE
⇂ '/usr/bin/php8.1' 'artisan' inspire > '/dev/null' 2>&1
2 của nó sẽ được thực thi theo lịch trình đã chỉ định.
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
7Lập kế hoạch công việc xếp hàng đợi
thường là các tác vụ chạy trong thời gian dài được xử lý ở chế độ nền để tránh can thiệp vào các quy trình chính của ứng dụng. Các tác vụ như vậy có thể được thực hiện theo một lịch trình đã xác định bằng cách sử dụng phương thức
2022-10-06 21:42:39 Running ['artisan' inspire] ...................2,878ms DONE
⇂ '/usr/bin/php8.1' 'artisan' inspire > '/dev/null' 2>&1
5 trên bộ lập lịch biểuChẳng hạn, bạn có thể sử dụng tính năng này để cập nhật chỉ mục tìm kiếm của ứng dụng mỗi giờ một lần như sau
.
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
8Nếu bạn đang sử dụng dịch vụ của bên thứ ba [chẳng hạn như Amazon SQS] để xử lý các công việc được xếp hàng đợi của mình, thì bạn cũng cần chỉ định tên của công việc và dịch vụ bạn đang sử dụng để kết nối hàng đợi thích hợp sẽ được sử dụng để xếp hàng công việc
.
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
9Liệt kê tất cả các nhiệm vụ theo lịch trình
Bạn có thể lấy danh sách tất cả các tác vụ đã lên lịch bằng lệnh bên dưới. Nó hiển thị từng tác vụ đã lên lịch và thời gian gọi tiếp theo của chúng
nano app\Console\Kernel.php
0nano app\Console\Kernel.php
1Chạy các tác vụ theo lịch trình trong nền
Khi bạn có nhiều tác vụ được lên lịch để chạy đồng thời, Laravel sẽ thực hiện từng tác vụ một theo cách chúng được xác định trong tệp
2022-10-06 21:42:39 Running ['artisan' inspire] ...................2,878ms DONE
⇂ '/usr/bin/php8.1' 'artisan' inspire > '/dev/null' 2>&1
6. Tuy nhiên, nếu một tác vụ cần thời gian dài để chạy, nó sẽ trì hoãn tất cả các tác vụ tiếp theo. Do đó, bạn có thể muốn chạy các tác vụ đã lên lịch của mình ở chế độ nền bằng cách sử dụng phương pháp 2022-10-06 21:42:39 Running ['artisan' inspire] ...................2,878ms DONE
⇂ '/usr/bin/php8.1' 'artisan' inspire > '/dev/null' 2>&1
7 để nhiều tác vụ có thể chạy đồng thờinano app\Console\Kernel.php
2Lưu ý rằng chỉ có thể sử dụng
2022-10-06 21:42:39 Running ['artisan' inspire] ...................2,878ms DONE
⇂ '/usr/bin/php8.1' 'artisan' inspire > '/dev/null' 2>&1
7 cho các tác vụ được lên lịch bằng các phương thức INFO No scheduled commands are ready to run.
7 hoặc $schedule->command['inspire']->everyMinute[];
0🔭 Bạn muốn nhận thông báo khi các tác vụ theo lịch trình Laravel của bạn ngừng hoạt động?
Đi đến Thời gian hoạt động tốt hơn để bắt đầu theo dõi công việc của bạn sau 2 phút
Đặt tần suất lịch trình phù hợp
Cho đến nay, chúng ta mới chỉ thấy các phương thức
$schedule->command['inspire']->everyMinute[];
1 và $schedule->command['inspire']->everyMinute[];
3 hoạt động, nhưng Laravel cung cấp một số tùy chọn tần suất khác, có thể được phân loại thành một số loại khác nhau được thảo luận bên dướiTùy chọn tần số phổ biến
1. tùy chọn phút
nano app\Console\Kernel.php
32. Tùy chọn hàng giờ
nano app\Console\Kernel.php
4Các tùy chọn dựa trên giờ ở trên sẽ chạy nhiệm vụ của chúng vào phút đầu tiên của giờ, nhưng thay vào đó, phương pháp
$schedule
->command["inspire"]
->everyMinute[]
->sendOutputTo["scheduler-output.log"];
3 có thể được sử dụng để chạy nhiệm vụ vào phút thứ $schedule
->command["inspire"]
->everyMinute[]
->sendOutputTo["scheduler-output.log"];
4 của giờ3. Tùy chọn hàng ngày
nano app\Console\Kernel.php
54. Tùy chọn hàng tuần
nano app\Console\Kernel.php
6Phương pháp
$schedule
->command["inspire"]
->everyMinute[]
->sendOutputTo["scheduler-output.log"];
5 cho phép bạn chỉ định một ngày [Chủ Nhật. $schedule
->command["inspire"]
->everyMinute[]
->sendOutputTo["scheduler-output.log"];
6, Thứ Hai. $schedule
->command["inspire"]
->everyMinute[]
->sendOutputTo["scheduler-output.log"];
7,. , Thứ bảy. $schedule
->command["inspire"]
->everyMinute[]
->sendOutputTo["scheduler-output.log"];
8] và thời gian, nhưng bạn cũng có thể chỉ định nhiều ngày bằng cách sử dụng một mảngnano app\Console\Kernel.php
75. Tùy chọn hàng tháng
nano app\Console\Kernel.php
86. tùy chọn hàng năm
nano app\Console\Kernel.php
9tùy chọn ràng buộc
Các tùy chọn ràng buộc là một tập hợp các phương thức đặc biệt xác định các ràng buộc bổ sung sau khi bạn đã chỉ định tần suất. Ví dụ: trước tiên bạn có thể lên lịch cho một công việc chạy hàng tuần rồi đặt các ràng buộc như thế này
command["inspire"]->hourly[];
}
/**
* Register the commands for the application.
*
* @return void
*/
protected function commands[]
{
$this->load[__DIR__ . "/Commands"];
require base_path["routes/console.php"];
}
}
0Phương thức
$schedule
->command["inspire"]
->everyMinute[]
->sendOutputTo["scheduler-output.log"];
9 lấy một mảng các số nguyên làm đầu vào, cho phép bạn giới hạn việc thực hiện tác vụ trong các ngày cụ thể trong tuầnBên cạnh các ràng buộc về ngày, còn có hai phương pháp ràng buộc dựa trên thời gian bổ sung,
.
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
00 và .
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
01, xác định phạm vi thời gian mà một công việc được phép thực hiệncommand["inspire"]->hourly[];
}
/**
* Register the commands for the application.
*
* @return void
*/
protected function commands[]
{
$this->load[__DIR__ . "/Commands"];
require base_path["routes/console.php"];
}
}
1Lợi ích chính của việc sử dụng Laravel để lên lịch tác vụ là bạn có thể sử dụng thứ gì đó khác với thời gian hiện tại để kích hoạt việc thực thi tác vụ. Ví dụ: phương thức
.
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
02 lấy hàm gọi lại làm đầu vào và tác vụ sẽ chỉ chạy nếu hàm trả về .
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
03command["inspire"]->hourly[];
}
/**
* Register the commands for the application.
*
* @return void
*/
protected function commands[]
{
$this->load[__DIR__ . "/Commands"];
require base_path["routes/console.php"];
}
}
2Ví dụ trên lên lịch một nhiệm vụ để thực hiện dựa trên thời tiết. Nó chỉ thực hiện vào những ngày nắng. Cái bên dưới sử dụng phương thức
.
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
04 để xác định điều kiện bỏ qua một tác vụ theo lịch trìnhcommand["inspire"]->hourly[];
}
/**
* Register the commands for the application.
*
* @return void
*/
protected function commands[]
{
$this->load[__DIR__ . "/Commands"];
require base_path["routes/console.php"];
}
}
3Cuối cùng, bạn cũng có thể lên lịch các tác vụ dựa trên môi trường ứng dụng hiện tại, điều này rất hữu ích nếu bạn chỉ muốn lên lịch một số tác vụ trong sản xuất
command["inspire"]->hourly[];
}
/**
* Register the commands for the application.
*
* @return void
*/
protected function commands[]
{
$this->load[__DIR__ . "/Commands"];
require base_path["routes/console.php"];
}
}
4Trong ví dụ trên, tác vụ sẽ chỉ chạy trong môi trường dàn dựng và sản xuất
Tùy chọn bổ sung
Các phương pháp lập lịch trình được thảo luận cho đến nay là đủ cho hầu hết các tình huống, nhưng Laravel cung cấp một số kỹ thuật nâng cao để tạo các lịch trình phức tạp hơn
1. Phương pháp .
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
05
.
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
Phương thức
.
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
05 cho phép bạn tạo lịch biểu bằng cách sử dụng các biểu thức Cron thô. Ví dụcommand["inspire"]->hourly[];
}
/**
* Register the commands for the application.
*
* @return void
*/
protected function commands[]
{
$this->load[__DIR__ . "/Commands"];
require base_path["routes/console.php"];
}
}
5Mã này sẽ lên lịch cho lệnh
$schedule->command['inspire']->everyMinute[];
2 Artisan chạy ở 04. 05 chủ nhật hàng tuần2. Phương pháp .
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
08
.
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
Bạn có thể nhận thấy rằng một số phương pháp tần suất [chẳng hạn như
.
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
09, .
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
10 và các phương pháp khác] không cho phép bạn chỉ định thời gian chính xác, điều này đôi khi có thể hạn chế. Điều này có thể được khắc phục thông qua phương pháp .
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
08 như hình bên dướicommand["inspire"]->hourly[];
}
/**
* Register the commands for the application.
*
* @return void
*/
protected function commands[]
{
$this->load[__DIR__ . "/Commands"];
require base_path["routes/console.php"];
}
}
6Nếu bạn muốn lên lịch cho một nhiệm vụ ở múi giờ khác, bạn cũng có thể xâu chuỗi một phương thức
.
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
12 trong lịch trình của mình như thế nàycommand["inspire"]->hourly[];
}
/**
* Register the commands for the application.
*
* @return void
*/
protected function commands[]
{
$this->load[__DIR__ . "/Commands"];
require base_path["routes/console.php"];
}
}
7Thiết lập móc nhiệm vụ
Một tính năng hữu ích khác mà Laravel cung cấp cho việc lên lịch tác vụ là móc tác vụ. Chúng cho phép bạn thực thi một số mã trước hoặc sau khi tác vụ được thực thi hoặc nếu một điều kiện nhất định là đúng [chẳng hạn như nếu tác vụ thất bại hoặc thành công]
Ví dụ: bạn có thể ghi lại một thông báo trước và sau khi một tác vụ được thực thi như hình bên dưới. Vui lòng tham khảo bài viết được liên kết để biết thêm thông tin về cách đăng nhập Laravel. Chúng tôi cho rằng bạn đã cấu hình đúng hệ thống ghi nhật ký cho mục đích trình diễn
command["inspire"]->hourly[];
}
/**
* Register the commands for the application.
*
* @return void
*/
protected function commands[]
{
$this->load[__DIR__ . "/Commands"];
require base_path["routes/console.php"];
}
}
8Nếu công việc theo lịch trình của bạn tạo ra một số đầu ra, bạn có thể truy cập nó theo phương thức
.
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
13 thông qua biến .
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
14 với loại .
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
15Một tác vụ được lên lịch có thể thành công hoặc thất bại, vì vậy Laravel cũng cung cấp các móc nối
.
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
16 và .
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
17 để xử lý một trong hai kết quảcommand["inspire"]->hourly[];
}
/**
* Register the commands for the application.
*
* @return void
*/
protected function commands[]
{
$this->load[__DIR__ . "/Commands"];
require base_path["routes/console.php"];
}
}
9Giống như hook
.
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
13, bạn có thể truy cập đầu ra thông qua .
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
19. Lưu ý rằng các hook .
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
16 và .
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
17 chỉ hoạt động đối với các tác vụ được lên lịch bằng các phương thức $schedule->command['inspire']->everyMinute[];
0 hoặc INFO No scheduled commands are ready to run.
7 vì lỗi tác vụ được phát hiện thông qua mã thoát khác khôngCuối cùng, chúng ta có họ hook
.
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
24 hữu ích để thông báo cho dịch vụ bên ngoài khi tác vụ theo lịch trình đã bắt đầu, hoàn thành hoặc thất bại. Dưới đây là các phương pháp có sẵn và chữ ký của họ
25. ├── README.md │ ├── Exceptions │ │ └── Handler.php │ ├── Http │ │ ├── Controllers │ │ │ ├── Controller.php │ │ ├── Kernel.php │ │ └── Middleware │ ├── Models │ └── Providers ├── artisan ├── bootstrap ├── composer.json ├── composer.lock ├── config ├── database ├── package.json ├── php_errors.log ├── phpunit.xml ├── public ├── resources ├── routes ├── storage ├── tests └── vite.config.js
26. ├── README.md │ ├── Exceptions │ │ └── Handler.php │ ├── Http │ │ ├── Controllers │ │ │ ├── Controller.php │ │ ├── Kernel.php │ │ └── Middleware │ ├── Models │ └── Providers ├── artisan ├── bootstrap ├── composer.json ├── composer.lock ├── config ├── database ├── package.json ├── php_errors.log ├── phpunit.xml ├── public ├── resources ├── routes ├── storage ├── tests └── vite.config.js
27. ├── README.md │ ├── Exceptions │ │ └── Handler.php │ ├── Http │ │ ├── Controllers │ │ │ ├── Controller.php │ │ ├── Kernel.php │ │ └── Middleware │ ├── Models │ └── Providers ├── artisan ├── bootstrap ├── composer.json ├── composer.lock ├── config ├── database ├── package.json ├── php_errors.log ├── phpunit.xml ├── public ├── resources ├── routes ├── storage ├── tests └── vite.config.js
28. ├── README.md │ ├── Exceptions │ │ └── Handler.php │ ├── Http │ │ ├── Controllers │ │ │ ├── Controller.php │ │ ├── Kernel.php │ │ └── Middleware │ ├── Models │ └── Providers ├── artisan ├── bootstrap ├── composer.json ├── composer.lock ├── config ├── database ├── package.json ├── php_errors.log ├── phpunit.xml ├── public ├── resources ├── routes ├── storage ├── tests └── vite.config.js
29. ├── README.md │ ├── Exceptions │ │ └── Handler.php │ ├── Http │ │ ├── Controllers │ │ │ ├── Controller.php │ │ ├── Kernel.php │ │ └── Middleware │ ├── Models │ └── Providers ├── artisan ├── bootstrap ├── composer.json ├── composer.lock ├── config ├── database ├── package.json ├── php_errors.log ├── phpunit.xml ├── public ├── resources ├── routes ├── storage ├── tests └── vite.config.js
30. ├── README.md │ ├── Exceptions │ │ └── Handler.php │ ├── Http │ │ ├── Controllers │ │ │ ├── Controller.php │ │ ├── Kernel.php │ │ └── Middleware │ ├── Models │ └── Providers ├── artisan ├── bootstrap ├── composer.json ├── composer.lock ├── config ├── database ├── package.json ├── php_errors.log ├── phpunit.xml ├── public ├── resources ├── routes ├── storage ├── tests └── vite.config.js
Một ví dụ thực tế về lập lịch tác vụ trong Laravel
Bây giờ chúng ta đã đề cập đến một số yếu tố cần thiết về lập lịch tác vụ của Laravel, hãy xem xét một số ví dụ thực tế về cách nó có thể hữu ích trong một dự án thực tế. Chúng tôi sẽ tự động hóa một số tác vụ cho ứng dụng quản lý lớp học, nơi giáo viên có thể ghi lại điểm của học sinh cho từng lớp học
Bắt đầu bằng cách sao chép dự án vào máy tính của bạn bằng lệnh sau
$schedule->command["inspire"]->hourly[];
0Tiếp theo, chuyển sang thư mục
.
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
31Đổi tên tệp
.
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
32 tại thư mục gốc của dự án thành .
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
33Sau đó, cài đặt các phụ thuộc cần thiết với
.
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
34Tạo một
.
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
35 mới bằng cách chạy lệnh Artisan sauTrước khi khởi động máy chủ phát triển, hãy đảm bảo rằng tất cả các mô-đun cần thiết đều được kích hoạt trong tệp
.
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
36 của bạn$schedule->command["inspire"]->hourly[];
1Vị trí của php của bạn. ini có thể được tìm thấy bằng cách chạy
$schedule->command["inspire"]->hourly[];
2Cuối cùng, khởi động máy chủ dev
$schedule->command["inspire"]->hourly[];
3Mở trình duyệt của bạn và truy cập http. //127. 0. 0. 1. 8000. Bạn sẽ thấy trang chủ của ứng dụng quản lý lớp học. Để tiết kiệm thời gian, chúng tôi đã đưa vào một số dữ liệu giả cho dự án
Sau đó, bạn có thể tạo sinh viên mới
Hoặc cập nhật/xóa học sinh
Tự động sao lưu cơ sở dữ liệu hàng ngày
Hãy bắt đầu bằng cách lên lịch cho một tác vụ phổ biến được yêu cầu trong hầu hết các ứng dụng web sản xuất. sao lưu cơ sở dữ liệu hàng ngày. Vì cơ sở dữ liệu SQLite đang được sử dụng cho dự án này, nên việc sao lưu nó chỉ bao gồm việc sao chép tệp
.
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
37 vào một vị trí đã chỉ địnhBạn có thể viết shell script để thực hiện tác vụ này như hình bên dưới
$schedule->command["inspire"]->hourly[];
4$schedule->command["inspire"]->hourly[];
5Khi tập lệnh này được thực thi, nó sẽ sao lưu cơ sở dữ liệu bằng cách sao chép
.
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
37 vào thư mục .
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
39 dưới một tên mới có chứa ngày hiện tại. Nó cũng quét các tệp cũ hơn bảy ngày và xóa chúng để ngăn thư mục sao lưu phát triển quá lớn. Đây không phải là một bản sao lưu nhiều, nhưng nó đủ để chứng minh khái niệm tự động hóa quy trình như vậyHãy tiếp tục và lên lịch chạy tập lệnh này mỗi ngày một lần với đoạn mã sau
$schedule->command["inspire"]->hourly[];
6Bạn có thể chạy lệnh
.
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
40 để xem lịch chạy tiếp theonano app\Console\Kernel.php
0$schedule->command["inspire"]->hourly[];
8Nếu bạn muốn xác nhận rằng tập lệnh đang hoạt động bình thường, bạn có thể thay đổi tần suất thành từ
.
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
41 thành $schedule->command['inspire']->everyMinute[];
3 và chạy lệnh INFO No scheduled commands are ready to run.
4 để bộ lập lịch tiếp tục chạy mỗi phútSau một phút hoặc lâu hơn, bạn sẽ thấy thư mục
.
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
39 được tạo cũng như các tệp sao lưuTạo báo cáo hàng tuần
Trường hợp sử dụng cổ điển để lập lịch tác vụ là tự động tạo báo cáo cho các số liệu kinh doanh có liên quan. Trong phần này, chúng tôi sẽ trình bày cách tự động hóa các nhiệm vụ đó bằng cách gửi báo cáo hàng tuần về hiệu suất của học sinh đến một địa chỉ email. Trong ví dụ này, báo cáo sẽ có cùng định dạng với trang chủ của ứng dụng
Trước khi tiếp tục, bạn phải định cấu hình chức năng gửi email của Laravel với Gmail SMTP [hoặc bất kỳ nhà cung cấp email nào bạn chọn]. Bắt đầu bằng cách chuyển đến Tài khoản của tôi Google -> Bảo mật và bật Xác minh 2 bước. Sau đó, đi đến Mật khẩu ứng dụng và tạo một mật khẩu duy nhất cho ứng dụng Laravel của bạn. Trong Chọn ứng dụng, chọn tùy chọn Khác [Tên tùy chỉnh] và nhập "Ứng dụng Quản lý Lớp học" trong mục nhập văn bản
Khi mật khẩu được tạo, hãy sao chép nó vào khay nhớ tạm của bạn. Quay trở lại trình soạn thảo văn bản của bạn và mở lại tệp
.
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
33 của bạn. Chỉnh sửa phần .
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
46 của tệp như hình bên dưới. Lưu ý rằng .
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
47 phải là mật khẩu duy nhất bạn vừa tạo$schedule->command["inspire"]->hourly[];
9Tiếp theo, đi tới tệp
2022-10-06 21:42:39 Running ['artisan' inspire] ...................2,878ms DONE
⇂ '/usr/bin/php8.1' 'artisan' inspire > '/dev/null' 2>&1
6 của bạn và sửa đổi nó như hình bên dưới. Đừng quên thay thế trình giữ chỗ .
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
49 bằng địa chỉ email thựcLaravel Framework 9.33.0
. . .
about Display basic information about your application
clear-compiled Remove the compiled class file
view:cache Compile all of the application's Blade templates
view:clear Clear all compiled view files
0Lớp
.
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
50 chưa được tạo, vì vậy hãy tạo nó bằng cách dán mã bên dưới vào tệp .
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
51 mớiứng dụng/Thư/Báo cáo hàng tuần. php
Laravel Framework 9.33.0
. . .
about Display basic information about your application
clear-compiled Remove the compiled class file
view:cache Compile all of the application's Blade templates
view:clear Clear all compiled view files
1Khi phương thức
2022-10-06 21:42:39 Running ['artisan' inspire] ...................2,878ms DONE
⇂ '/usr/bin/php8.1' 'artisan' inspire > '/dev/null' 2>&1
0 được thực thi, Laravel sẽ gửi trang .
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
53 [.
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
54] đến email bạn chọn, hiển thị mọi người trong lớp và điểm của họ cho từng môn họcBạn có thể tạm thời thay đổi tần suất lịch trình thành thứ gì đó phù hợp hơn để thử nghiệm, chẳng hạn như
$schedule->command['inspire']->everyMinute[];
3 chẳng hạn và đợi tác vụ thực thi. Bạn sẽ nhận được email sau trong hộp thư đến của mìnhGiám sát các nhiệm vụ theo lịch trình
Một cách đơn giản để xác minh rằng các tác vụ theo lịch trình của bạn đang chạy như mong đợi và cung cấp kết quả chính xác là gửi email cho chính bạn. Giả sử thông tin đăng nhập thư của bạn đã được thiết lập trong tệp
.
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
33 [như đã thảo luận trước đó], phương pháp .
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
57 có thể được sử dụng để gửi đầu ra của tác vụ tới một địa chỉ emailLaravel Framework 9.33.0
. . .
about Display basic information about your application
clear-compiled Remove the compiled class file
view:cache Compile all of the application's Blade templates
view:clear Clear all compiled view files
2Khi bạn chạy bộ lập lịch, bạn sẽ nhận được email có kết quả mỗi khi tác vụ được thực thi. Nếu bạn chỉ muốn nhận email khi có sự cố xảy ra, bạn có thể sử dụng phương thức
.
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
58 để thay thếLaravel Framework 9.33.0
. . .
about Display basic information about your application
clear-compiled Remove the compiled class file
view:cache Compile all of the application's Blade templates
view:clear Clear all compiled view files
3Gửi email theo cách được mô tả ở trên là một cách tiếp cận phù hợp để theo dõi các nhiệm vụ đã lên lịch trong các dự án đồ chơi, đặc biệt là đối với các nhiệm vụ không quan trọng. Tuy nhiên, nó không phù hợp với các hệ thống sản xuất cần đảm bảo rằng mỗi tác vụ đều chạy theo lịch trình. Một giải pháp phù hợp hơn ở đây là sử dụng dịch vụ giám sát chuyên dụng
Thời gian hoạt động tốt hơn là một nền tảng giám sát và quản lý sự cố tuyệt vời có thể giám sát toàn bộ cơ sở hạ tầng của bạn và cảnh báo bạn một cách thích hợp nếu có sự cố xảy ra. Phần này sẽ thảo luận về cách sử dụng Thời gian hoạt động tốt hơn để theo dõi trạng thái của các tác vụ Laravel đã lên lịch của bạn
Hãy tiếp tục và tạo một tài khoản Thời gian hoạt động tốt hơn miễn phí nếu bạn chưa có tài khoản. Khi bạn đã đăng nhập, hãy đi tới phần Nhịp tim và tạo một nhịp tim mới
Chọn một tên thích hợp cho màn hình của bạn và chọn tần suất bạn muốn công việc này được lặp lại. Sau đó, trong phần Báo cáo khi có cuộc gọi, hãy chọn cách bạn muốn được thông báo khi không thực thi được công việc
Khi bạn đã hoàn tất, hãy nhấp vào Lưu thay đổi và bạn sẽ thấy trang này
URL được đánh dấu ở trên là cách Better Uptime có thể giám sát tác vụ theo lịch trình của bạn. Mỗi khi một tác vụ thực thi, bạn nên thực hiện yêu cầu HEAD, GET hoặc POST tới URL này
Quay trở lại tệp
2022-10-06 21:42:39 Running ['artisan' inspire] ...................2,878ms DONE
⇂ '/usr/bin/php8.1' 'artisan' inspire > '/dev/null' 2>&1
6 của bạn và thêm móc nối .
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
60 cho nhiệm vụ đã lên lịch tương ứng như hình bên dướiLaravel Framework 9.33.0
. . .
about Display basic information about your application
clear-compiled Remove the compiled class file
view:cache Compile all of the application's Blade templates
view:clear Clear all compiled view files
4Phương thức
.
├── README.md
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── Controller.php
│ │ ├── Kernel.php
│ │ └── Middleware
│ ├── Models
│ └── Providers
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── php_errors.log
├── phpunit.xml
├── public
├── resources
├── routes
├── storage
├── tests
└── vite.config.js
60 gửi yêu cầu tới API Thời gian hoạt động tốt hơn sau khi tác vụ thực thi xong. Sau khi Thời gian hoạt động tốt hơn bắt đầu nhận yêu cầu, màn hình sẽ được đánh dấu là "Đang hoạt động", có nghĩa là tác vụ theo lịch trình đã sẵn sàng và đang chạySau đó, bạn có thể mô phỏng một sự cố bằng cách dừng bộ lập lịch với
INFO No scheduled commands are ready to run.
6. Nếu Better Uptime không nhận được yêu cầu trong khung thời gian bạn vừa cấu hình, màn hình sẽ được đánh dấu là "Down", có nghĩa là đã xảy ra sự cốBạn cũng sẽ nhận được cảnh báo trong các kênh đã định cấu hình
Lưu ý rằng bạn phải tạo nhịp tim riêng cho từng tác vụ đã lên lịch để chúng có thể được theo dõi độc lập
suy nghĩ cuối cùng
Trong hướng dẫn này, chúng ta đã nghiên cứu lập lịch tác vụ trong ứng dụng Laravel và thảo luận về nhiều tính năng thiết yếu của nó. Chúng tôi cũng trình bày cách thiết lập nó trong một ứng dụng web điển hình và cách theo dõi trạng thái của các tác vụ đã lên lịch để bạn được thông báo kịp thời nếu có sự cố xảy ra
Nếu muốn tìm hiểu sâu hơn về lập lịch tác vụ trong Laravel, bạn có thể đọc tài liệu chính thức của nó để biết thêm thông tin
Cảm ơn đã đọc và chúc bạn lên lịch vui vẻ
Chúng tôi gọi cho bạn khi bạn
trang web đi xuống
Nhận thông báo với một hoàn toàn tốt hơn
nền tảng giám sát cơ sở hạ tầng
Kiểm tra thời gian hoạt động, Ping, Cổng, SSL và hơn thế nữa
Nhận thông báo sự cố Slack, SMS và điện thoại
Lập kế hoạch nhiệm vụ theo yêu cầu dễ dàng
Tạo trang trạng thái miễn phí trên tên miền của bạn
Có một gợi ý bài viết?
Tác phẩm này được cấp phép theo Creative Commons Ghi công-Phi thương mại-Chia sẻ tương tự 4. 0 Giấy phép quốc tế