您现在的位置是: 网站首页> PHP> ThinkPHP ThinkPHP

ThinkPHP6.0使用自定义指令实现定时任务

Smile 2020-09-22 PHP ThinkPHP 阅读:1919

简介在使用ThinkPHP6.0搭建项目时需要实现一个定时任务,查了下ThinkPHP6.0的官方手册,发现有自定义指令这个功能,跟Laravel中的任务调度类似,如下实现

1、打开cmd,进入项目根目录,执行以下命令

php think make:command Backup

2、该命令在会生成一个 app\command\Backup命令行指令类,打开修改如下

<?php
declare (strict_types = 1);

namespace app\command;

use think\console\Command;
use think\console\Input;
use think\console\input\Argument;
use think\console\input\Option;
use think\console\Output;
use app\admin\controller\BackupData;

class Backup extends Command
{
    protected function configure()
    {
        // 指令配置
        $this->setName('backup')
            ->setDescription('the backup command');        
    }

    protected function execute(Input $input, Output $output)
    {
    	// 指令输出
    	$output->writeln('backup');
         
        // 执行文章数据备份任务,当然也可以写你自己的其他定时任务
        $backup = new BackupData($this->app);
        $backup->backupArticse();
    }
}

注意:在tp6里,实例化应用控制器是需要传递 $this->app 参数,不然会无情报错

3、配置config/console.php文件

<?php
// +----------------------------------------------------------------------
// | 控制台配置
// +----------------------------------------------------------------------
return [
    // 指令定义
    'commands' => [
    	'backup' => \app\command\Backup::class,
    ],
];

4、配置完成后就可以在命令行中输入如下命令测试了

php think backup

输出 backup 以及等待备份任务的完成

backup

5、在 linux 中使用 crontab -e 命令编写定时任务

* * * * * /usr/bin/php /www/app/think backup>>/www/log/backup.log 2>&1

6、最后使用 crontab -l 命令检查定时任务是否正常,也可以到/www/log目录查看执行日志

更多详细说明请参考官方文档

很赞哦! (0)

文章评论

站点信息