{"id":33953384,"url":"https://github.com/luxixing/swoole-task","last_synced_at":"2025-12-12T19:59:35.384Z","repository":{"id":57041690,"uuid":"69626286","full_name":"luxixing/swoole-task","owner":"luxixing","description":"分布式任务处理框架，基于swoole扩展，使用composer打包","archived":false,"fork":false,"pushed_at":"2019-12-09T06:43:42.000Z","size":31,"stargazers_count":136,"open_issues_count":5,"forks_count":24,"subscribers_count":15,"default_branch":"master","last_synced_at":"2025-03-20T00:23:08.493Z","etag":null,"topics":["php","swoole","task"],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/luxixing.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-09-30T02:29:10.000Z","updated_at":"2024-11-26T03:37:08.000Z","dependencies_parsed_at":"2022-08-24T00:50:55.395Z","dependency_job_id":null,"html_url":"https://github.com/luxixing/swoole-task","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/luxixing/swoole-task","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luxixing%2Fswoole-task","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luxixing%2Fswoole-task/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luxixing%2Fswoole-task/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luxixing%2Fswoole-task/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/luxixing","download_url":"https://codeload.github.com/luxixing/swoole-task/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luxixing%2Fswoole-task/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":27690468,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-12-12T02:00:06.775Z","response_time":129,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["php","swoole","task"],"created_at":"2025-12-12T19:59:30.226Z","updated_at":"2025-12-12T19:59:35.371Z","avatar_url":"https://github.com/luxixing.png","language":"PHP","readme":"swoole-task\n-----------\nswoole-task是基于PHP swoole扩展开发的一个异步多进程任务处理框架，服务端和客户端通过http协议进行交互。\n\n它适用于任务需要花费较长时间处理，而客户端不必关注任务执行结果的场景.比如数据清洗统计类的工作，报表生成类任务。\n    \n### 环境要求\n\n- PHP 5.4 以上版本,强烈推荐适用5.6，性能更好\n- Swoole 1.8.7 以上版本\n- PDO PDO_Mysql \n\n### 安装方法\n\n鉴于目前composer已经成为PHP包管理事实的标准，swoole-task直接支持通过composer 命令安装使用。\n\n关于composer的使用请参考 composer 官网学习。\n\n假设当前我们项目的名称为play,需要在项目中集成swoole-task，服务，执行如下命令。\n\n    \n```sh\n#由于某种不知名原因，访问 packagist太慢，可使用国内镜像\n#composer config repo.packagist composer https://packagist.phpcomposer.com\ncomposer require \"ping/swoole-task:dev-master\"\n\n```\n    \n\u003e 如果项目根目录中不存在composer.json文件，需要执行composer init 命令。\n\n### 使用方法\n\n安装完成之后，在项目的vendor/bin 目录下会有swoole-tssk.php这个脚本，此脚本就是swoole-task服务的管理脚本。\n\n以默认配置启动swoole-task服务    \n\n```sh\nphp swoole-task.php start \n```\n\u003e 第一次启动会执行初始化动作。\n\n关于swoole-task.php脚本的详细说明\n\n- 参数\n\n```\n--app  应用目录名称，默认 sw-app,可根据自己需求设置\n--nodaemon 以非守护进程模式启动，默认读取配置文件http_server.php 中的 daemonize的值\n--help 显示帮忙\n--host 指定绑定的ip 默认读取配置文件 http_server.php中的host取值\n--port 指定绑定的端口，默认读取配置文件中的 http_server.php中的port的取值\n```\n\n- 命令\n\n```\nstart   //启动服务\nstop    //停止服务\nrestart //重启，配置文件常驻内存，修改后需要重启\nstatus  //查看状态\nlist    //swoole-task服务列表\n```\n\n用例说明:\n\n```\n//启动swoole-task服务，以项目根目录下的sw目录为业务目录\nphp swoole-task.php --app sw start \n//停止swoole-task 服务\nphp swoole-task.php -app sw stop\n//启动swoole-task 服务，使用默认app目录(sw-app),使用host和port 覆盖默认配置\nphp swoole-task.php --host 127.0.0.1 --port 9520 start\n//显示服务状态\nphp swoole-task.php --app sw status\n```\n\n### 配置说明\n第一次使用 php swoole-task.php start 启动服务的时候，默认的业务逻辑编写目录是sw-app,和vendor在同级目录。\n\n自动生成如下目录结构\n\n```\n- sw-app  和vendor是同级目录\n    - Conf 配置文件目录，不可更改\n        - http_server.php 主要是针对HttpServer的配置\n        - app.php 主要是对实际业务的配置\n        - dev  开发环境配置文件目录(列如 db.php redis.php等等，文件名为key值)\n        - test 测试环境配置文件目录\n        - prod 生产环境配置文件目录\n    - Runtime 运行时输出目录\n    - Ctrl  controller目录，可修改app.php配置文件，使用别的名称来替代Ctrl\n    - Dao 数据访问业务Dao,可修改app.php配置文件，使用别的名称替代Dao\n    - Helper 帮助类，修改配置文件可以使用别的名称\n```\n\n默认配置文件说明\n\napp.php(没强迫症建议直接使用默认配置不必修改)\n\n```\nns_pre  命名空间前缀，默认值 SwTask\nns_ctrl  ctrl类的命名空间，注意命名空间和ctrl类是一致的，遵循psr4规则，\nns_dao dao类的命名空间\nns_helper heper类的命名空间\n```\n\nhttp_server.php(修改配置好之后需要重启加载配置文件)\n\n```\ntz  时区设置，默认是上海时区，数据处理的时候非常重要\nhost 监听的主机ip地址，默认配置0.0.0.0\nport 监听的主机端口，默认值 9523\napp_env swoole-task 业务的环境，支持dev,test,prod三个值\nps_name 进程名称前缀 默认 swTask\ndaemonize 是否守护进程模式 0 非守护进程 1 守护进程，默认0\nworker_num worker 进程数量，推荐数量和cpu核数保持一致\ntask_woker_num 任务进程数量，根据机器配合和实际需求设置\ntask_max_request 每个任务进程最多可处理请求数，超过重启，保证内存不泄露的机制\n```\n\n### swoole-task 服务启动流程说明\n\n初次运行swoole-task,执行php vendor/bin/swoole-task.php 命令，不添加任何参数，会执行如下初始化工作\n\n```\n1 根据默认配置，创建Ctrl, Dao，Helper,\n Conf, Conf/test, Conf/dev, Conf/prod, Runtime, Runtime/log 目录,\n2 创建TplCtrl,TplDao 文件，写入到Ctrl/Dao 目录下，作为模板文件\n3 初始化配置文件app.php , http_server.php，写入到Conf目录下\n```\n运行 php swoole-task.php 命令，不添加任何参数，会在项目根目录下检查是否存在sw-app 目录。\n\n如果不存在，执行初始化工作;\n\n如果存在，加载sw-app/Conf目录下的相关配置，启动服务。\n\n### 路由说明\n\n客户端和服务端http协议交互，形式如下\n\ncurl \"127.0.0.1:9523/ctrlName/actionName\"\n\ncurl \"127.0.0.1:9523?op=ctrlName.actionName\"\n\n初始化后，默认生成的TplCtrl.php 文件,其中包含了一个 helloAction的方法\n\n访问这个action的命令为\n\ncurl \"127.0.0.1:9523/tpl/hello\"\n\n或者 \n\ncurl \"127.0.0.1:9523?op=tpl.hello\"\n\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluxixing%2Fswoole-task","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fluxixing%2Fswoole-task","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluxixing%2Fswoole-task/lists"}