1.首先命令生成,你的commands
php artisan make:command SyncMddPics
该命令会在Commands目录下生成SyncMddPics.php文件
2.在生成的文件SyncMddPics,按照要求写填写你的项目需要的配置
class SyncMddPics extends Command
{
protected $signature = 'sync:pics {begin=0} {end=0}(自定义)';
protected $description = '同步目的地图片数据(自定义)';
protected $service;
public function __construct(SyncPicService $syncPicService)
{
parent::__construct();
$this->service = $syncPicService;
}
public function handle()//这里填写你需要执行的定时任务
{
//图片默认的查询条件
//根据当前时间戳获取前一天的时间
$begin = $this->argument('begin',0);
$end = $this->argument('end', 0);
$begin = !empty($begin) ? $begin : strtotime(date("Y-m-d"),time()-1);
$end = !empty($end) ? $begin : $begin + 60*60*24;
$this->service->toSync($begin, $end);
}
}
3.第三部就是配置你的Kernel文件了,需要把这个命令,一级改命令执行时间做出以下配置
class Kernel extends ConsoleKernel
{
protected $commands = [
//这里填写你的命令类
SyncMddPics::class
];
protected function schedule(Schedule $schedule)
{
//深夜两点更新数据库前一天新增游记中图片的提取
$schedule->command('sync:pics --force')->daily()->at('02:00');
}
protected function commands()
{
require base_path('routes/console.php');
}
}
4.接下来你需要在你的服务器里面定义一个定时任务,执行上述命令
终端执行:crontab -e
然后添加一行命令: php /www/wwwroot/laravel55/artisan schedule:run.....这条命令每分钟执行一次,然后遍历你的schedule是否有可执行任务(执行是根据你设定的时间来),但是一般情况下,可以直接在服务器上面添加 php artisan sync:pics命令执行,这个命令的执行时间你自己来设定(中间加粗部分是你的项目路径)
修改好保存,最后:corntab installing new corntab
(如果你是windows开发,可以直接在Terminal里面执行,PHP artisan sync:pics)看是否执行成功
5.查看日志看自己的调度任务是否执行成功