yzh52521/swoole-crontab

基于 swoole 的定时任务服务

v1.0.1 2023-06-19 07:26 UTC

This package is auto-updated.

Last update: 2024-10-19 10:28:50 UTC


README

简介

yzh52521/swoole-crontab是基于swoole的定时任务服务,

安装说明

  • 详见 composer.json require

运行说明

  • 启动server时,添加用户进程Process加载data_file配置文件到Swool\Table中,worker进程接收请求,用户进程每分钟扫描一次Swool\Table解析定时任务.创建|删除|启动|关闭定时任务请求会实时更新data_file配置文件内容,并且修改Swool\Table内容.
  • 默认Swool\Table大小为1024行,最多添加1024个定时任务.
  • 复制项目根目录test文件中Crontab.php
  • 服务启动默认配置为项目下Config.php
  • 注意修改引入的vendor/autoload.php文件路径
php Crontab start #调试模式
php Crontab start -d #常驻内存模式
php Crontab stop #关闭常驻内存服务

请求说明

  • 运行后默认请求地址为: baseUrl(http://ip:9501/),请求响应格式统一为json
  • 开启定时任务后可能不会立即执行,等待执行时间为0-60秒
  • 请求方式统一为post,请求地址如下:
    • 创建任务:baseUrl/create
      // 请求字段
      {
          "name": "url",    // 任务名称
          "start_time": 0,  // 开始时间默认0解析format格式直接运行
          "end_time": 0,   // 结束时间默认0一直运行
          "format": "* * * * * *",  // 执行时间格式参见Crontab基本格式再加上一个秒
          "run_type": "Curl",  // 运行方式内置Class, Curl , Bash三种方式
          "command": "http://192.168.1.102"  // class 任务 "command": {"\app\task\Test","execute"}" 
      }
      ##注释:bash运行方式必须配置白名单文件路径`bash_whitelist_file`,内容为可执行的`sh`脚本的绝对路径,保证服务器安全,详见`BashJobExecute`文件
      //返回字段
      {
          "code": 0,
          "message": "操作成功.",
          "data": {
              "id": "60457f0d17313" //任务编号
          }
      }
    • 任务列表:baseUrl/all
          {
              "code": 0,
              "message": "操作成功.",
              "data": {
                  "job_list": {
                      "604582ba74e34": {
                          "name": "Curl",
                          "start_time": 0,
                          "end_time": 0,
                          "format": "* * * * * *",
                          "run_type": "Curl",
                          "command": "http://192.168.1.102",
                          "status": 1
                      }
                  }
              }
          }
    • 以下接口需post创建任务时返回的任务编号(id)参数
      • 查找任务:baseUrl/find
      • 删除任务:baseUrl/delete
      • 任务统计:baseUrl/count
      • 开始任务:baseUrl/start
      • 停止任务:baseUrl/stop

返回格式

{
    "code": 0, //响应码
    "message": "操作成功.",//响应说明
    "data": {} //非0无此字段
}

code响应码

  • 0 成功
  • 1 失败
  • 405 访问Method错误,只允许post
  • 404 url访问不存在
  • 500 服务出错