资讯专栏INFORMATION COLUMN

laravel定时任务和命令行

MartinDai / 638人阅读

摘要:应用场景定时脚本任务需要在凌晨计算前一日的数据并汇总到统计表中。命令复杂的定时任务可以配合命令。命令按照命令行文档,了解它的使用和配置。使用命令脚本名称生成执行文件,文件在中查看。

应用场景:

定时脚本任务
需要在凌晨计算前一日的数据并汇总到统计表中。

Artisan命令
复杂的定时任务可以配合Artisan命令。

Artisan命令:

按照 Laravel Artisan命令行 文档,了解它的使用和配置。

使用Artisan命令 php artisan make:command {脚本名称} 生成执行文件,文件在 app/Console/Commands 中查看。

添写Artisan命令的名称和描述,例如:

protected $signature = "stat:generate {start? : 脚本统计的起始时间(选填 eg.2017-10-01 )} {end? : 脚本统计的结束时间(选填)}";

protected $description = "生成每日的统计信息";

$signature属性中的 start? end? 表示可输入的可选参数,这里提供了脚本开始和结束时间的可选项,用于生成指定时间日期内的统计信息,eg. php artisan stat:generate 2017-08-01 。

在handle()方法中写程序部分

    public function handle()
    {
        // 如果未输入日期参数,默认选择前一天作为统计时间(??是php7新语法)
        $this->date = $this->argument("start") ?? date("Y-m-d", strtotime("-1 day"));
        $endDate = $this->argument("end") ?? date("Y-m-d");
        
        // 判断输入的日期格式是否正确
        if (!strtotime($this->date) || !strtotime($endDate)) {
            $this->error("请输入正确的日期格式!");die;
        }

        // 循环执行每一天的统计脚本
        while ($this->date < $endDate) {
            // 这里是需要执行的统计逻辑,sql等
            $this->_active_num_game();
            // 每执行一次,统计日期加1天
            $this->date = date("Y-m-d", strtotime("{$this->date} +1 day"));
        }
    }
定时脚本任务:

将以下命令添加到cron 中

* * * * * php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1
 

所有的计划任务定义在 AppConsoleKernel 类的 schedule 方法中,Artisan命令写在commands属性中。

    protect $commands = [
        Commands{声明的脚本文件名称}::class
    ];
    
    protected function schedule(Schedule $schedule)
    {
        // 上面的Artisan命令将在每晚执行
        $schedule->command("stat:generate")->daily();
    }

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/30651.html

相关文章

  • 高性能千万级定时任务管理服务forsun laravel插件使用详解

    摘要:高性能高精度定时服务,轻松管理千万级定时任务。支持任务到期触发和。支持创建延时任务和定时到期任务,和原生保持相同接口,轻松使用。不支持任务输出任务钩子及维护模式。是不指定任务名时自动生成,每个任务名必须唯一,相同任务名重复定义将会自动覆盖。 Forsun高性能高精度定时服务,轻松管理千万级定时任务。 定时服务项目地址:https://github.com/snower/forsun l...

    Muninn 评论0 收藏0
  • Laravel 开源项目 『 糖果盒子 - Web 开发者的书签导航 』

    摘要:项目概述糖果盒子是采用开发的站点导航应用,专注分享优质开发资源站点,希望成为开发人员最喜爱的的书签导航。线上地址糖果盒子开发者的书签导航地址求环境要求部署安装本项目代码使用框架开发,本地开发环境使用。 showImg(https://segmentfault.com/img/remote/1460000012018405?w=3346&h=1950);showImg(https://s...

    姘存按 评论0 收藏0
  • Laravel 开源项目 『 糖果盒子 - Web 开发者的书签导航 』

    摘要:项目概述糖果盒子是采用开发的站点导航应用,专注分享优质开发资源站点,希望成为开发人员最喜爱的的书签导航。线上地址糖果盒子开发者的书签导航地址求环境要求部署安装本项目代码使用框架开发,本地开发环境使用。 showImg(https://segmentfault.com/img/remote/1460000012018405?w=3346&h=1950);showImg(https://s...

    summerpxy 评论0 收藏0
  • Laravel 开源项目 『 糖果盒子 - Web 开发者的书签导航 』

    摘要:项目概述糖果盒子是采用开发的站点导航应用,专注分享优质开发资源站点,希望成为开发人员最喜爱的的书签导航。线上地址糖果盒子开发者的书签导航地址求环境要求部署安装本项目代码使用框架开发,本地开发环境使用。 showImg(https://segmentfault.com/img/remote/1460000012018405?w=3346&h=1950);showImg(https://s...

    CntChen 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<