关于schedule的写法

Laravel的schedule以往我们的写法是直接写到Console/Kernel中,这样不利于项目维护,尤其是某些计划任务要重跑时,我们需要通过接口调用等方式来触发

接下来,我们的Schedule的写法统一封装为artisan命令,调用方法为:

/**
     * Define the application's command schedule.
     *
     * @param \Illuminate\Console\Scheduling\Schedule $schedule
     * @return void
     */
    protected function schedule(Schedule $schedule)
    {
        // 每五分钟执行自动取消订单任务
        $schedule->command('order:auto-cancel')->everyFiveMinutes();

        // 每天凌晨02:00,执行计划任务,将全部的发货成功未确认并超时的订单,设置为确认状态
        $schedule->command('order:auto-confirm')->dailyAt('02:00');

        // 每天两点,执行计划任务,将全部确认的收货并超时的订单设置为关闭,,
        $schedule->command('order:auto-close')->dailyAt('02:00');
    }

这样做的好处是,如果计划任务执行有问题,我们修复后,可以通过artisan命令来执行

!!!另外,在设计计划任务时,要注意不要生成脏数据/错误数据,例如:计划任务在执行前要有前置条件,例如清分任务,需要判断一些是否已经清分过了(是否已经生成记录),不要出现数据重复的情况

Last Updated:
Contributors: mtt-Ada@yisa.art