tp5中使用Command计划任务

有时候我们定时执行任务的需求,也可能是为了性能,也有可能是需求,不管如何,我们如何在TP5中配合计划任务完成这一功能呢?
下面是我的使用到定时上传文件到ftp的一个记录:

步骤1

在application下创建command文件夹
application/command

步骤2

然后再创建自己的Command类,如下


class Uploadftp extends Command{

    /**
     * 初始化
     * @param Input  $input  An InputInterface instance
     * @param Output $output An OutputInterface instance
     */
    protected function initialize(Input $input, Output $output)
    {
      // 读取数据库配置文件
      $filename = ROOT_PATH . 'application/config/prod_database.php';
      Config::load($filename, 'database');
    }

    /**
     * 配置指令
     */
    protected function configure()
    {

      $this->setName('Uploadftp')->setDescription('定时更新Token的icon到远程的ftp服务器');
    }

    /**
     * 执行指令
     * @param Input  $input
     * @param Output $output
     * @return null|int
     * @throws \LogicException
     * @see setCode()
     */
    protected function execute(Input $input, Output $output)
    {

      $output->writeln('开始执行上传ftp操作...',json_encode($input->getOptions()));
      $this->upload2fpts($output);
      $output->writeln('执行完毕!');
    }
        public function upload2fpts(Output $output){
                //逻辑代码
        }

    }

注意点
因为我们使用到了多环境配置文件,所以如果我们要使用数据库的话,我们要在初始化的时候,重新进行数据库的配置读取,这一点一定要注意。如下:

// 读取数据库配置文件
$filename = ROOT_PATH . 'application/config/prod_database.php';
Config::load($filename, 'database');

步骤3

在command.php中添加我们的Command子类

return [
  'app\command\Uploadftp'
];

步骤4

测试:
项目根目录下,think的php脚本,如果我们执行php think 的话,会打印我们配置的Command,这里是Uploadftp
我们切到项目根目录,执行 php think Uploadftp 会看到已经执行了我们的Commnad类中的逻辑

步骤5

添加计划任务
在linux环境下,添加计划任务

crontab -e 

*/10  * * * * php /data/web/project/think Uploadftp   

//编辑多长时间,或者计划的任务的规则,保存,我们这里是10分钟执行一次

可以使用crontab -l 查看任务

tail -f /var/log/cron //查看最新的日志

暂无评论

相关推荐

TP5标签之for循环

我们使用的场景是根据用户级别显示星,几级就显示几星,代码如下其实$vo.svalue是一个整数,代表几星 <td>{$vo.s …

tp5标签们

一、比较标签如: {比较标签 name="变量" value="值"} 内容 {/比较标签} {eq name="name&quo …

微信扫一扫,分享到朋友圈

tp5中使用Command计划任务