webman + TP-ORM 动态设置crontab定时任务组件

yzh52521

简介

基于 webman + TP-ORM 的动态设置定时任务管理

安装

composer require yzh52521/webman-task

使用

简单使用

   $param = [
     'method' => 'crontabIndex',//计划任务列表
     'args'   => ['limit' => 10, 'page' => 1]//参数
    ];
   $result= yzh52521\Task\Client::instance()->request($param);
   return json($result);

计划任务列表

方法名

method: crontabIndex

请求参数

args

参数名称 是否必须 示例 备注
page 1 页码
limit 15 每页条数

返回数据

{
"code": 200,
 "data": {
 "list": [
 {
 "id": 1,
 "title": "输出 webman 版本",
 "frequency": "*/30 * * * * *",
 "shell": "php webman version",
"running_times": 3,
 "last_running_time": 1625636646,
 "remark": "每30秒执行",
 "sort": 0,
"status": 1,
 "create_time": 1625636609,
 "update_time": 1625636609
 },
 ],
 "count": 1
 },
 "msg": "ok!"
}

计划任务日志列表

method: crontabLog

请求参数

args

参数名称 是否必须 示例 备注
page 1 页码
limit 15 每页条数
sid 1 计划任务ID

返回数据

{
"code": 200,
 "data": {
 "list": [
{
"id": 12,
 "sid": 1,
 "command": "php webman version",
 "output": "1.3.0",
 "return_code": 0,
 "running_time": "0.115895",
"create_time": 1625636673,
 "update_time": 1625636673
},
}

添加任务

method: crontabCreate

请求参数

args

参数名称 参数类型 是否必须 示例 备注
title text 输出 webman 版本 任务标题
frequency text */30 * * * * * 任务频率
shell text php webman version 任务脚本
remark text 每3秒执行 备注
sort text 0 排序
status text 1 状态[0禁用; 1启用]

返回数据

{
 "code": 200,
 "data":{
        "code":true
 },
 "msg": "ok!"
}

重启任务

method: crontabReload

请求参数

args

参数名称 参数类型 是否必须 示例 备注
id text 1,2 计划任务ID 多个逗号隔开

返回数据

{
 "code": 200,
 "data":{
        "code":true
 },
 "msg": "ok!"
}

修改任务

method: crontabUpdate

请求参数

args

参数名称 参数类型 是否必须 示例 备注
id text 1
title text 输出 webman 版本 任务标题
frequency text */3 * * * * * 任务频率
shell text php webman version 任务脚本
remark text 每3秒执行 备注
sort text 0 排序
status text 1 状态[0禁用; 1启用]

返回数据

{
 "code": 200,
 "data":{
        "code":true
 },
 "msg": "ok!"
}

删除任务

method: crontabDelete

请求参数

args

参数名称 参数类型 是否必须 示例 备注
id text 1,2 计划任务ID 多个逗号隔开

返回数据

{
 "code": 200,
 "data":{
        "code":true
 },
 "msg": "ok!"
}
2743 11 6
11个评论

WatcherLuo

能对php 7.3版本支持吗?

  • yzh52521 2022-06-16

    已支持

  • WatcherLuo 2022-06-16

    感谢

  • WatcherLuo 2022-06-16
    private $worker;
    
    /**
     * 调试模式
     * @var bool
     */
    private $debug = false;
    
    /**
     * 任务进程池
     * @var Crontab[] array
     */
    private $crontabPool = [];
    
    /**
     * 定时任务表
     * @var string
     */
    private $crontabTable;
    
    /**
     * 定时任务日志表
     * @var string
     */
    private $crontabLogTable;

    要改成这样,属性添加限定类型php 7.3 不支持

  • yzh52521 2022-06-17

    感谢反馈 已经提交

WatcherLuo

任务类型为command时怎么传递参数呢?

weywey

哥您好 数据表怎么创建呢 手动创建 还是 composer自动创建呢 ?如果是composer创建的那我就有问题了 因为我没有自动创建成功

  • yzh52521 2022-10-21

    安装扩展后 启动webman 就创建好了

864328615

启动总是报错啊大佬```php
ArgumentCountError: Too few arguments to function yzh52521\Task\Mutex\RedisTaskMutex::__construct(), 0 passed in /Users/destiny/admin/webman/vendor/workerman/webman-framework/src/Container.php on line 38 and exactly 1 expected in /Users/destiny/admin/webman/vendor/yzh52521/webman-task/src/Mutex/RedisTaskMutex.php:17
Stack trace:

864328615

截图

Gin

获取任务列表报错
截图
截图

  • Gin 2023-04-01

    改成 127.0.0.1:2345 可以了

Coisini

获取任务列表报错

截图

截图

截图

  • Gin 2023-07-03

    task 目录下 listen 0.0.0.0:2345 缓存 127.0.0.1:2345

  • Coisini 2023-07-03

    是task目录下配置文件的 listen吗

  • Gin 2023-07-03

    config/plugin/yzh52521/task/app.php

Coisini

修改了还是一样
截图

vendor\yzh52521\webman-task\src\Server.php 刚刚Server.php打印数据,是这个方法出了问题,不知道是我的依赖注入版本问题还是php问题。

截图

打印结果
string(14) "GET / HTTP/1.1"
string(9) "onMessage"

截图

Coisini

截图

就是版本高一些,不知道是不是这个原因

截图

  • 暂无评论
willrook

能实现定时任务编辑,删除这些操作立即生效吗 现在需要下一分钟才生效

  • Gin 2023-07-21

    定时任务本身就是下一分钟生效的机制

zhaojunwie


是否单次执行 怎么不生效呢,

  • yzh52521 2023-09-01

    生效是下一分钟 你这是5秒一次

年代过于久远,无法发表评论

yzh52521

2526
积分
0
获赞数
0
粉丝数
2021-03-12 加入
🔝