《L02》第九章学习笔记——任务调度

任务调度简介:

过去,你可能需要在服务器上为每一个调度任务去创建 Cron 条目。因为这些任务的调度不是通过代码控制的,你要查看或新增任务调度都需要通过 SSH 远程登录到服务器上去操作,所以这种方式很快会让人变得痛苦不堪。

Laravel 的命令行调度器允许你在 Laravel 中清晰明了地定义命令调度。在使用这个任务调度器时,你只需要在你的服务器上创建单个 Cron 入口。你的任务调度在 app/Console/Kernel.php 的 schedule 方法中进行定义。

在这段简介中其实也能知道使用任务调度的大概的步骤:

1. 在服务器上创建单个 Cron 入口。

2. 在 app/Console/Kernel.php 的 schedule 方法中定义任务调度。

调度方式:

  • 闭包。

  • Artisan 命令调度。

  • 队列任务调度。

  • Shell 命令调度。

在《L02》教程中使用的是 Artisan 命令调度。

任务调度的应用:

1. 每小时更新一次活跃用户。

2. 每天零点更新一次用户最后活跃时间。

使用任务调度的具体步骤:

1. 修改系统的 Cron 计划任务配置信息,命令如下:


export EDITOR=vi && crontab -e

* * * * * php /home/vagrant/Code/larabbs/artisan schedule:run >> /dev/null 2>&1

一旦 Cron 设定好了,Cron 软件将会每分钟调用一次 Laravel 命令调度器。

schedule:run Artisan 命令将评估你的所有计划任务,并根据服务器的当前时间决定它们是否运行。

1. 定义调度:

实现方式:给 command 方法传递命令名称或类来调度一个 Artisan 命令。

教程中用的是给 command 方法传递命令名称。

具体在 app/Console/Kernel.php 中的 schedule 方法中注册,示例如下:


<?php

namespace App\Console;

...

class Kernel extends ConsoleKernel

{

    ...

    protected function schedule(Schedule $schedule)

    {

        // $schedule->command('inspire')->hourly();

        // 一小时执行一次 活跃用户 数据生成命令

        $schedule->command('larabbs:calculate-active-user')->hourly;

        // 每天零时执行一次

        $schedule->command('larabbs:sync-user-actived-at')->dailyAt('00:00');

    }

    /**

     * Register the commands for the application.

     *

     * @return void

     */

    protected function commands()

    {

        $this->load(__DIR__.'/Commands');

        require base_path('routes/console.php');

    }

}

调度频率选项

在教程的例子使用了:

1. ->hourly(); 每小时执行一次。

2. ->dailyAt(‘00:00’); 每天零点执行一次。


想了解更多调度频率选项,请参考《文档》

参考资料:

1. 《文档》

2. 《L02》

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!