当前位置: 首页 > news >正文

【PHP】ThinkPHP5使用EasyTask插件做定时任务

目录

一、安装扩展

二、安装EasyTask插件

三、示例

1、创建Task.php类

2、任务配置

3、执行命令

四、注意事项


语言:PHP>=5.4

定时任务插件:EasyTask

运行环境:windows

EasyTask的Windows环境要求如下(推荐使用PHPENV集成环境):

PHP版本大于等于5.4

PHP开启json扩展(默认已安装)

PHP开启mbstring扩展(默认已安装)

PHP开启com_dotnet扩展(自己手动安装)

PHP开启wpc扩展(自己手动安装)

PHP正确配置环境变量

EasyTask官方文档:Windows安装 · EasyTask开发文档 · 看云

一、安装扩展

wpc扩展安装方法:下载wpc扩展一键安装包,根据PHP是32/64位执行一键安装包即可,切记此次说明的是PHP的位数,不是系统的位数,下载地址:https://download.csdn.net/download/qq_25285531/91471342,下载完成后解压,选择合适的位数,运行exe文件,选择PHP的安装目录,一键下载并注册COM组件,安装完成。

二、安装EasyTask插件

进入项目根目录,使用composer安装EasyTask插件,安装之后在“thinkphp\library\think\”文件夹下生成一个console文件夹

composer require easy-task/easy-task

三、示例

1、创建Task.php类

路径:application/command/Task.php

<?php
namespace app\command;use think\console\Command;
use think\console\Input;
use think\console\input\Argument;
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'));// 实例化$task = new \EasyTask\Task();// 设置时区,默认不会设置时区,需要的话可以自己设置$task->setTimeZone('Asia/Shanghai')  // 设置进程是否在后台运行,默认为false非后台运行,执行时会出现几个黑色窗口,当设置为true时,运行时看不到黑色窗口界面$task->setDaemon(false);// 设置项目别名,建议每个项目单独设置一个值,有助于进程日志区分$task->setPrefix('test');// 设置服务是否自动重启,默认是关闭的,当进程挂掉的时候,EasyRask会自动重启进程$task->setAutoRecover(false);// EasyTask运行日志和缓存目录$task->setRunTimePath('./runtime/');/** 闭包函数类型的定时任务,把需要执行的代码写在闭包函数中* addFun($fun,$alas,$time,$used)* $fun 闭包函数,需要重复执行的代码,下面示例是重复写文件* $alas 任务别名,尽量不要重复* $time 任务执行间隔,默认为秒* $used 开启几个进程*/// 每5秒执行1次,即开启1个进程$task->addFunc(function () {/******** 这里可以写自己的执行任务 start **********/$this->write();/******** 这里可以写自己的执行任务 end **********/}, 'request', 5, 1);// 根据命令执行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');}}// 写入文件public function write(){// 文件名:日期.txt$path = ROOT_PATH.DS.'public'. DS .'logs'. DS .date("Ymd").'.txt';$msg = '11<br/>';file_put_contents($path, $msg.PHP_EOL,FILE_APPEND);}}

 上面执行自定义任务时,使用的是闭包函数的形式,也可以使用类名、shell命令的形式,具体使用方法可以参看官方文档说明:基础入门 · EasyTask开发文档 · 看云

2、任务配置

将上面创建的Task.php在配置文件application/command.php中配置,这里的“'app\command\Task'”路径是上面创建的Task.php的路径。

return ['app\command\Task'   //加入需要cmd或者linux-crontab执行的PHP文件
];

3、执行命令

进入项目目录,输入cmd输入下面命令

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

 出现下面表示成功

关闭 cmd窗口即可关闭所以任务

四、注意事项

1、扩展要安装成功

2、检查EasyTask是否安装成功

3、相关路径要正确

http://www.dtcms.com/a/296421.html

相关文章:

  • RAG面试内容整理-2. 稀疏检索基础(倒排索引、TF-IDF、BM25 等)
  • Vue2文件上传相关
  • vue中轮询:推荐 vue-request、@vueuse/core、rxjs
  • Vector Magic 1.15:强大的图片转矢量工具 + 使用教程
  • opt_param 隐含参数修改
  • Webpack/Vite 终极指南:前端开发的“涡轮增压引擎“
  • 深入理解 IO 多路复用:从 select 到 epoll
  • CTFshow-PWN-栈溢出(pwn67-pwn68)nop sled 空操作雪橇-对抗栈帧地址随机化
  • 数字化转型-埃森哲集团数字化顶层规划
  • SQL中的占位符、@Param注解和方法参数
  • vue递归树形结构删除不符合数据 生成一个新数组
  • HTTPS如何保障安全?详解证书体系与加密通信流程
  • AI 在金融:重塑金融服务的智能革命
  • 《小白学习产品经理》第十章:方法论之MVP
  • Windows 下配置 GPU 用于深度学习(PyTorch)的完整流程
  • 让复杂 AI 应用构建就像搭积木:Spring AI Alibaba Graph 使用指南与源码解读
  • 测试学习之——Pytest Day5
  • 关闭 Chrome 浏览器后,自动删除浏览历史记录
  • 3.7 综合挑战项目
  • C语言(长期更新)第5讲:数组练习(三)
  • 跑步有氧训练
  • MegaTTS3 使用
  • Elasticsearch 的聚合(Aggregations)操作详解
  • Mysql窗口函数
  • 数据库垂直拆分和水平拆分
  • 面经 - 车载多媒体系统
  • 【已解决】YOLO11模型转wts时报错:PytorchStreamReader failed reading zip archive
  • PyTorch数据选取与索引详解:从入门到高效实践
  • es 和 lucene 的区别
  • 【REACT18.x】CRA+TS+ANTD5.X实现useImperativeHandle让父组件修改子组件的数据