thinkphp5.0 创建自定义命令行

thinkphp5.0 创建自定义命令行

  • 在模块目录下面创建一个command目录文件夹,在此文件夹下创建一个php文件,这里我创建的是Crond.php
  • 在Crond.php中编写代码
namespace app\index\command;
use app\index\model\Robot;
use think\console\Command;
use think\console\Input;
use think\console\Output;

class Crond extends Command
{
    protected function configure()
    {
        $this->setName('Cron')->setDescription('计划任务');
    }

    protected function execute(Input $input, Output $output)
    {
        $this->doCron();
        $output->writeln("已经执行计划任务");//此代码主要是输出到命令行
    }

    public function doCron()
    {
        //在这个里做自己的计划任务工作等等,建议自己创建一个model业务类专门管理你的业务逻辑,最好通过静态方法调用
        Robot::getToken();
    }
}
  • 在application目录下的command.php文件中编写代码指定到我们刚才创建的Crond.php
return ['app\index\command\crond'];
  • 打开命令终端 cd我们的项目根目录下
╰$ cd develop/www/thinkRedis

执行 php think Cron 会输出以下内容代表成功了

AppledeiMac-2:thinkphp apple$ php think Cron
添加ok已经执行计划任务
You have new mail in /var/mail/apple
AppledeiMac-2:thinkphp apple$

目前我们计划任务代码已经别写完毕了,剩下的工作我们需要通过系统的计划任务调用这些代码,这样就实现了计划任务调用
我们首先在项目根目录中创建一个.sh脚本文件,文件内容设置如下

#!/bin/sh
PATH=/usr/local/php/bin:/opt/someApp/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
cd /Applications/MAMP/htdocs/thinkphp
php think Cron
  • 到目前为止脚本文件已经编写完毕,剩下我们开始编写crontab命令来执行这个脚本文件,在这里我们测试1分钟执行一次
1. crontab -e
2.插入以下命令 */1 * * * * bash /Applications/MAMP/htdocs/thinkphp/crond.sh
3 :wq保存退出

截止目前我们的计划任务就设置完毕了

  • 使用场景
  1. 积分一个月不用自动清空
  2. 自动化脚本(数据库源码备份)

雨夜的博客

你可能感兴趣的:(技术分享,php,运维,服务器)