美文网首页
8.自定义命令及任务调度

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

作者: darren911 | 来源:发表于2019-12-12 00:23 被阅读0次

    任务调度

    • 你的任务调度在 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;
    });
    

    相关文章

      网友评论

          本文标题:8.自定义命令及任务调度

          本文链接:https://www.haomeiwen.com/subject/yaczgctx.html