8.自定义命令及任务调度

2019-12-12  本文已影响0人  darren911

任务调度

定义调度

    protected function schedule(Schedule $schedule)
    {
        $schedule->call(function () {
            DB::table('recent_users')->delete();
        })->daily();
    }

队列任务调度

job 方法可以用来调度 队列任务 。 此方法提供了一种快捷方式来调度任务,而无需使用 call 方法创建闭包来调度任务:

$schedule->job(new Heartbeat)->everyFiveMinutes();
// 分发任务到「heartbeats」队列...
$schedule->job(new Heartbeat, 'heartbeats')->everyFiveMinutes();

Shell 调度命令

exec 方法可用于向操作系统发送命令:
$schedule->exec('node /home/forge/script.js')->daily();

调度频率

->cron('* * * * *'); 自定义 Cron 计划执行任务
->everyMinute(); 每分钟执行一次任务
->everyFiveMinutes(); 每五分钟执行一次任务
->everyTenMinutes(); 每十分钟执行一次任务
->everyFifteenMinutes(); 每十五分钟执行一次任务
->everyThirtyMinutes(); 每三十分钟执行一次任务
->hourly(); 每小时执行一次任务
->hourlyAt(17); 每小时第 17 分钟执行一次任务
->daily(); 每天午夜执行一次任务(译者注:每天零点)
//???
->timezone('America/New_York'); 设置时区

时间范围限制

between 方法可用于限制任务在一天中的某个时间段执行:

$schedule->command('reminders:send')
                    ->hourly()
                    ->between('7:00', '22:00');

闭包检测限制

when 方法可根据检测结果来执行任务。换言之,若给定的闭包返回 true ,若无其他限制条件阻止,任务就会一直执行:

$schedule->command('emails:send')->daily()->when(function () {
    return true;
});
上一篇 下一篇

猜你喜欢

热点阅读