《L02》第九章学习笔记——任务调度
任务调度简介:
过去,你可能需要在服务器上为每一个调度任务去创建 Cron 条目。因为这些任务的调度不是通过代码控制的,你要查看或新增任务调度都需要通过 SSH 远程登录到服务器上去操作,所以这种方式很快会让人变得痛苦不堪。
Laravel 的命令行调度器允许你在 Laravel 中清晰明了地定义命令调度。在使用这个任务调度器时,你只需要在你的服务器上创建单个 Cron 入口。你的任务调度在 app/Console/Kernel.php 的 schedule 方法中进行定义。
在这段简介中其实也能知道使用任务调度的大概的步骤:
1. 在服务器上创建单个 Cron 入口。
2. 在 app/Console/Kernel.php 的 schedule 方法中定义任务调度。
调度方式:
闭包。
Artisan 命令调度。
队列任务调度。
Shell 命令调度。
在《L02》教程中使用的是 Artisan 命令调度。
任务调度的应用:
1. 每小时更新一次活跃用户。
2. 每天零点更新一次用户最后活跃时间。
使用任务调度的具体步骤:
1. 修改系统的 Cron 计划任务配置信息,命令如下:
export EDITOR=vi && crontab -e
* * * * * php /home/vagrant/Code/larabbs/artisan schedule:run >> /dev/null 2>&1
一旦 Cron 设定好了,Cron 软件将会每分钟调用一次 Laravel 命令调度器。
schedule:run Artisan 命令将评估你的所有计划任务,并根据服务器的当前时间决定它们是否运行。
1. 定义调度:
实现方式:给 command
方法传递命令名称或类来调度一个 Artisan 命令。
教程中用的是给 command
方法传递命令名称。
具体在 app/Console/Kernel.php 中的 schedule 方法中注册,示例如下:
<?php
namespace App\Console;
...
class Kernel extends ConsoleKernel
{
...
protected function schedule(Schedule $schedule)
{
// $schedule->command('inspire')->hourly();
// 一小时执行一次 活跃用户 数据生成命令
$schedule->command('larabbs:calculate-active-user')->hourly;
// 每天零时执行一次
$schedule->command('larabbs:sync-user-actived-at')->dailyAt('00:00');
}
/**
* Register the commands for the application.
*
* @return void
*/
protected function commands()
{
$this->load(__DIR__.'/Commands');
require base_path('routes/console.php');
}
}
调度频率选项
在教程的例子使用了:
1. ->hourly(); 每小时执行一次。
2. ->dailyAt(‘00:00’); 每天零点执行一次。
想了解更多调度频率选项,请参考《文档》。
参考资料:
1. 《文档》
2. 《L02》
本作品采用《CC 协议》,转载必须注明作者和本文链接