如何使用ThinkPHP框架(thinkphp8.0)创建定时任务?

1、安装定时任务composer包

composer require easy-task/easy-task

2、创建命令行处理类文件

php think make:command Task  task

会生成文件:app\command\Task.php

将Task.php文件内容修改如下:

<?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;
 
class Task extends Command
{
    protected function configure()
    {
        //设置名称为task
        $this->setName('task')
            //增加一个命令参数
            ->addArgument('action', Argument::OPTIONAL, "action", '')
            ->addArgument('force', Argument::OPTIONAL, "force", '');
    }
 
    protected function execute(Input $input, Output $output)
    {
        //获取输入参数
        $action = trim($input->getArgument('action'));
        $force = trim($input->getArgument('force'));
 
        // 配置任务,每隔20秒访问2次网站
        $task = new \EasyTask\Task();
        $task->setRunTimePath('./runtime/');
        $task->addFunc(function () {
            $url = 'https://www.wushengyong.com/';
            file_get_contents($url);
        }, 'request', 20, 2);;
 
        // 根据命令执行
        if ($action == 'start')
        {
            $task->start();
        }
        elseif ($action == 'status')
        {
            $task->status();
        }
        elseif ($action == 'stop')
        {
            $force = ($force == 'force'); //是否强制停止
            $task->stop($force);
        }
        else
        {
            exit('Command is not exist');
        }
    }
}

3、配置config\console.php文件

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

4、执行命令(windows请使用cmd):

php think task start  启动命令
php think task status 查询命令
php think task stop   关闭命令
php  think  task  stop  force   强制关闭命令

相关推荐

  1. 如何使用ThinkPHP框架thinkphp8.0)创建定时任务

    2024-01-20 05:12:01       55 阅读
  2. 如何使用thinkPHP3.2.* 版本开发

    2024-01-20 05:12:01       25 阅读
  3. Thinkphp 5框架学习

    2024-01-20 05:12:01       61 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-20 05:12:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-20 05:12:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-20 05:12:01       82 阅读
  4. Python语言-面向对象

    2024-01-20 05:12:01       91 阅读

热门阅读

  1. #Uniapp:rpx 和 upx的区别

    2024-01-20 05:12:01       49 阅读
  2. 随心玩玩(十四)词法解析器

    2024-01-20 05:12:01       53 阅读
  3. MySQL 循环执行INSERT

    2024-01-20 05:12:01       43 阅读
  4. 数据结构之二叉搜索树

    2024-01-20 05:12:01       50 阅读
  5. 【C++PCL】点云处理DBSCAN点云聚类分割

    2024-01-20 05:12:01       56 阅读
  6. resize和reverse修改容器大小

    2024-01-20 05:12:01       48 阅读
  7. Spring Boot入门

    2024-01-20 05:12:01       61 阅读
  8. TDengine启动和连接问题

    2024-01-20 05:12:01       57 阅读