任务调度
- 你的任务调度在 app/Console/Kernel.php 的 schedule 方法中进行定义。为了帮助你更好的入门,这个方法中有个简单的例子。
定义调度
- 在此例中,我们计划每天午夜调用一个闭包。在闭包中,我们会执行一个数据库查询来清空一张表:闭包具体是干嘛用的???声明场景使用???
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;
});
网友评论