您现在的位置是: 网站首页> PHP> ThinkPHP ThinkPHP
ThinkPHP6.0使用自定义指令实现定时任务
Smile 2020-09-08 12:11:04 PHP ThinkPHP 阅读:2666
简介在使用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)