laravel 中使用定时任务
Laravel5.3 Artisan Console 文档地址
http://laravelacademy.org/post/6228.html
1、在服务器上查看定时任务有哪些
crontab -e
使用该命令 打开vim 查看添加的任务有哪些
一行代表一个定时任务
2、将对应需要定时的laravel项目 添加到vim中(下面是dxjk的任务示例)
其中/to/artisan 需要更换为dxjk项目的绝对路径
* * * * * php /var/www/html/dxjk/artisan schedule:run >> /dev/null 2>&1
3、在dxjk项目中,更改app/Console/Kernel.php的schedule方法,执行逻辑定时任务(测试,是每分钟将test表id=1的time字段更改写入当前时间戳)
protected function schedule(Schedule $schedule)
{
$schedule->call(function () {
$time = time();
\DB::table('dxjk_test')->where('id',1)->update(['time' => $time]);
})->everyMinute();
}
4、提交代码,查看结果!(正常)
注:
artisan是laravel项目的命令行工具,通过php artisan + cmd可以执行项目里面定义的php任务,而schedule是laravel自带的一个命令,执行php artisan schedule,laravel会遍历你定义好的定时任务,并根据系统当前时间判断某个任务是否需要执行。crontab 是linux系统的定时任务工具,可以设置执行周期,和需要执行的shell命令,借助crontab每分钟执行一次artisan的schedule命令,让laravel检查是否有任务到期。(上面配置在crontab -e 中的内容,就是 借助crontab 每分钟执行一次artisan的schedule命令)