{"id":18345723,"url":"https://github.com/hyperf/gotask","last_synced_at":"2025-04-12T17:45:57.648Z","repository":{"id":43385065,"uuid":"249910682","full_name":"hyperf/gotask","owner":"hyperf","description":"⚡️ A lightning speed replacement for Swoole TaskWorker in Go ","archived":false,"fork":false,"pushed_at":"2024-07-31T11:16:46.000Z","size":8952,"stargazers_count":234,"open_issues_count":17,"forks_count":27,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-03T20:11:40.741Z","etag":null,"topics":["go","golang","hyperf","swoole"],"latest_commit_sha":null,"homepage":"","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/hyperf.png","metadata":{"files":{"readme":"README-CN.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"open_collective":"hyperf","custom":"https://hyperf.wiki/#/zh-cn/donate"}},"created_at":"2020-03-25T07:10:40.000Z","updated_at":"2025-03-28T11:56:38.000Z","dependencies_parsed_at":"2024-06-18T22:57:41.914Z","dependency_job_id":"a8bf3b4d-f815-4845-8995-8756805d8e66","html_url":"https://github.com/hyperf/gotask","commit_stats":null,"previous_names":["reasno/gotask"],"tags_count":30,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyperf%2Fgotask","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyperf%2Fgotask/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyperf%2Fgotask/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyperf%2Fgotask/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hyperf","download_url":"https://codeload.github.com/hyperf/gotask/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248609591,"owners_count":21132916,"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","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":["go","golang","hyperf","swoole"],"created_at":"2024-11-05T21:09:17.211Z","updated_at":"2025-04-12T17:45:57.627Z","avatar_url":"https://github.com/hyperf.png","language":"PHP","readme":"# GoTask\n\n[English](./README.md) | 中文\n\n[![Build Status](https://travis-ci.org/hyperf/gotask.svg?branch=master)](https://travis-ci.org/hyperf/gotask)\n\nGoTask通过[Swoole进程管理功能](https://wiki.swoole.com/#/process)启动Go进程作为Swoole主进程边车(Sidecar)，利用[进程通讯](https://wiki.swoole.com/#/learn?id=%e4%bb%80%e4%b9%88%e6%98%afipc)将任务投递给边车处理并接收返回值。可以理解为Go版的Swoole TaskWorker。\n\n```bash\ncomposer require hyperf/gotask\n```\n\n## 特性\n\n* [超高速低消耗](https://github.com/reasno/gotask-benchmark)\n* Co/Socket实现，100%协程化\n* 支持Unix Socket、TCP、stdin/stdout管道\n* PHP与Go双向通讯\n* 边车自动启停\n* 支持远程异常捕获\n* 支持结构化数据、二进制数据投递\n* go边车兼容[net/rpc](https://cloud.tencent.com/developer/section/1143675)\n* 自带连接池支持\n* 可独立使用，也可深度融合Hyperf\n\n## 使用场景\n* 执行阻塞函数，如MongoDB查询\n* 执行CPU密集操作，如编码解码\n* 接入Go语言生态，如Kubernetes\n\n## 使用要求\n\n* PHP 7.2+\n* Go 1.13+\n* Swoole 4.4LTS+\n* Hyperf 1.1+ (optional)\n\n## 示例\n\n```go\npackage main\n\nimport (\n\t\"github.com/hyperf/gotask/v2/pkg/gotask\"\n)\n\ntype App struct{}\n\nfunc (a *App) Hi(name string, r *interface{}) error {\n\t*r = map[string]string{\n\t\t\"hello\": name,\n\t}\n\treturn nil\n}\n\nfunc main() {\n\tgotask.SetAddress(\"127.0.0.1:6001\")\n\tgotask.Register(new(App))\n\tgotask.Run()\n}\n```\n\n```php\n\u003c?php\n\nuse Hyperf\\GoTask\\IPC\\SocketIPCSender;\nuse function Swoole\\Coroutine\\run;\n\nrequire_once \"../vendor/autoload.php\";\n\nrun(function(){\n    $task = new SocketIPCSender('127.0.0.1:6001');\n    var_dump($task-\u003ecall(\"App.Hi\", \"Hyperf\"));\n    // 打印 [ \"hello\" =\u003e \"Hyperf\" ]\n});\n\n```\n\n## 文档\n* [安装与配置](https://github.com/Hyperf/gotask/wiki/Installation-\u0026-Configuration)\n* [文档](https://github.com/Hyperf/gotask/wiki/Documentation)\n* [FAQ](https://github.com/Hyperf/gotask/wiki/FAQ)\n* [示例](https://github.com/Hyperf/gotask/tree/master/example)\n* [Hyperf示例](https://github.com/Hyperf/gotask-benchmark/blob/master/app/Controller/IndexController.php)\n\n## Benchmark\n\nhttps://github.com/reasno/gotask-benchmark\n\n## 鸣谢\n* https://github.com/spiral/goridge 提供了IPC通讯的编码和解码。\n* https://github.com/twose 提供了人肉答疑支持。\n\n\n\n","funding_links":["https://opencollective.com/hyperf","https://hyperf.wiki/#/zh-cn/donate"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhyperf%2Fgotask","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhyperf%2Fgotask","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhyperf%2Fgotask/lists"}