{"id":19756797,"url":"https://github.com/imiphp/imi-swoole-tracker","last_synced_at":"2025-04-30T12:30:42.158Z","repository":{"id":52214563,"uuid":"203944703","full_name":"imiphp/imi-swoole-tracker","owner":"imiphp","description":"在 imi 框架中接入 Swoole Tracker 监控","archived":false,"fork":false,"pushed_at":"2024-01-19T01:35:49.000Z","size":234,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":4,"default_branch":"2.0","last_synced_at":"2024-05-23T05:11:55.398Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://www.imiphp.com/","language":"PHP","has_issues":false,"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/imiphp.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,"governance":null,"roadmap":null,"authors":null}},"created_at":"2019-08-23T07:12:53.000Z","updated_at":"2023-11-11T10:30:08.000Z","dependencies_parsed_at":"2023-10-12T06:03:52.281Z","dependency_job_id":"34803122-e10e-4dbc-b174-f1add3a39e92","html_url":"https://github.com/imiphp/imi-swoole-tracker","commit_stats":{"total_commits":30,"total_committers":2,"mean_commits":15.0,"dds":0.06666666666666665,"last_synced_commit":"51b64005ef3062d054acd18c43b8eff5342385fc"},"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imiphp%2Fimi-swoole-tracker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imiphp%2Fimi-swoole-tracker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imiphp%2Fimi-swoole-tracker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imiphp%2Fimi-swoole-tracker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/imiphp","download_url":"https://codeload.github.com/imiphp/imi-swoole-tracker/tar.gz/refs/heads/2.0","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224207897,"owners_count":17273674,"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":[],"created_at":"2024-11-12T03:16:56.566Z","updated_at":"2024-11-12T03:16:57.145Z","avatar_url":"https://github.com/imiphp.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# imi-swoole-tracker\n\n[![Latest Version](https://img.shields.io/packagist/v/imiphp/imi-swoole-tracker.svg)](https://packagist.org/packages/imiphp/imi-swoole-tracker)\n[![Php Version](https://img.shields.io/badge/php-%3E=7.4-brightgreen.svg)](https://secure.php.net/)\n[![Swoole Version](https://img.shields.io/badge/swoole-%3E=4.7.0-brightgreen.svg)](https://github.com/swoole/swoole-src)\n[![IMI License](https://img.shields.io/github/license/imiphp/imi-swoole-tracker.svg)](https://github.com/imiphp/imi-swoole-tracker/blob/master/LICENSE)\n\n## 介绍\n\n在 imi 框架中接入 Swoole Tracker 监控\n\nSwoole Tracker: https://www.swoole-cloud.com/tracker.html\n\n* 企业版集成了Facebook的Xhprof工具，可以生成调用堆栈图和火焰图，亦可生成分层分析表格，方便找到程序瓶颈点进行优化。\n\n* 为解决PHP常驻进程的内存泄漏问题，企业版专门针对PHP的内存泄漏检测工具，方便快速的解决和定位内存持续增长问题。\n\n* Swoole异步/协程模式以及ReactPHP等众多框架最致命的就是阻塞调用，会让并发大大降低，为此我们开发了毫秒级阻塞检测工具，迅速定位导致阻塞的代码。\n\n* 自动抓取FPM、CLI进程数量，统计CPU、内存使用情况。\n\n* 所有工具零部署成本，后台一键开启关闭各种检测，完美支持PHP7。\n\n\u003e 本仓库仅用于浏览，不接受 issue 和 Pull Requests，请前往：\u003chttps://github.com/imiphp/imi\u003e\n\n## Swoole Tracker\n\n目前`Swoole Tracker`的`v2.5.0`版本支持自动生成应用名称并创建应用，无需修改任何代码，生成的应用名称格式为：\n\n`Swoole`的`HttpServer`：`ip:prot`\n\n其他的`Server`：`ip(hostname):prot`\n\n即安装好`swoole_tracker`扩展之后就可以正常使用`Swoole Tracker`的功能\n\n## 组件基本使用\n\n1. 在你的 `composer.json` 中加入下面的内容:\n\n```json\n{\n    \"require\": {\n        \"imiphp/imi-swoole-tracker\": \"~2.0.0\"\n    }\n}\n```\n\n2. 执行 `composer update` 安装。\n\n3. 在项目 `config/config.php` 中配置：\n\n```php\n[\n    'components'    =\u003e  [\n        // 引入本组件\n        'SwooleTracker'       =\u003e  'Imi\\SwooleTracker',\n    ],\n]\n```\n\n### Http 服务\n\n在服务器的 `config/config.php` 中配置：\n\n```php\n[\n    'beans'    =\u003e    [\n        'HttpDispatcher'    =\u003e    [\n            'middlewares'    =\u003e    [\n                …… // 你的其他中间件\n                \\Imi\\Server\\Http\\Middleware\\RouteMiddleware::class,\n                \"SwooleTrackerHttpMiddleware\", // 放在 RouteMiddlware 后\n            ],\n        ],\n        'SwooleTrackerHttpMiddleware'   =\u003e  [\n            'serviceName'   =\u003e 'imi-http-example', // 服务名\n            // 'serverIp'      =\u003e null, // 服务器 IP，默认获取当前网卡 IP\n            // 'interface'     =\u003e null, // 网卡 interface 名，自动获取当前网卡IP时有效\n            // 'successStatusCode' =\u003e 200, // 成功的 Http 状态码\n        ],\n    ],\n];\n```\n\n### WebSocket 服务\n\n在服务器的 `config/config.php` 中配置：\n\n```php\n[\n    'beans'    =\u003e    [\n        'WebSocketDispatcher'    =\u003e    [\n            'middlewares'    =\u003e    [\n                …… // 你的其他中间件\n                \\Imi\\Server\\WebSocket\\Middleware\\RouteMiddleware::class,\n                \"SwooleTrackerWebSocketMiddleware\", // 放在 RouteMiddlware 后\n            ],\n        ],\n        'SwooleTrackerWebSocketMiddleware'  =\u003e  [\n            'serviceName'       =\u003e 'imi-websocket-example', // 服务名\n            // 'serverIp'          =\u003e null, // 服务器 IP，默认获取当前网卡 IP\n            // 'interface'         =\u003e null, // 网卡 interface 名，自动获取当前网卡IP时有效\n            // 'successCode'       =\u003e  500, // 当成功时上报的默认code\n            // 'exceptionCode'     =\u003e  500, // 当发生异常时上报的默认code\n            // 指定获取请求方法名的参数，必须有\n            'nameHandler'       =\u003e  function(\\Imi\\Server\\WebSocket\\Message\\IFrame $frame){\n                return $frame-\u003egetFormatData()-\u003eaction ?? 'unknown'; // 代码仅供参考\n            },\n        ],\n    ],\n];\n```\n\n### TCP 服务\n\n在服务器的 `config/config.php` 中配置：\n\n```php\n[\n    'beans'    =\u003e    [\n        'TcpDispatcher'    =\u003e    [\n            'middlewares'    =\u003e    [\n                …… // 你的其他中间件\n                \\Imi\\Server\\TcpServer\\Middleware\\RouteMiddleware::class,\n                \"SwooleTrackerTCPMiddleware\", // 放在 RouteMiddlware 后\n            ],\n        ],\n        'SwooleTrackerTCPMiddleware'  =\u003e  [\n            'serviceName'       =\u003e 'imi-tcp-example', // 服务名\n            // 'serverIp'          =\u003e null, // 服务器 IP，默认获取当前网卡 IP\n            // 'interface'         =\u003e null, // 网卡 interface 名，自动获取当前网卡IP时有效\n            // 'successCode'       =\u003e  500, // 当成功时上报的默认code\n            // 'exceptionCode'     =\u003e  500, // 当发生异常时上报的默认code\n            // 指定获取请求方法名的参数，必须有\n            'nameHandler'       =\u003e  function(\\Imi\\Server\\TcpServer\\Message\\IReceiveData $data){\n                return $data-\u003egetFormatData()-\u003eaction ?? 'unknown'; // 代码仅供参考\n            },\n        ],\n    ],\n];\n```\n\n### UDP 服务\n\n在服务器的 `config/config.php` 中配置：\n\n```php\n[\n    'beans'    =\u003e    [\n        'UdpDispatcher'    =\u003e    [\n            'middlewares'    =\u003e    [\n                …… // 你的其他中间件\n                \\Imi\\Server\\UdpServer\\Middleware\\RouteMiddleware::class,\n                \"SwooleTrackerUDPMiddleware\", // 放在 RouteMiddlware 后\n            ],\n        ],\n        'SwooleTrackerUDPMiddleware'  =\u003e  [\n            'serviceName'       =\u003e 'imi-udp-example', // 服务名\n            // 'serverIp'          =\u003e null, // 服务器 IP，默认获取当前网卡 IP\n            // 'interface'         =\u003e null, // 网卡 interface 名，自动获取当前网卡IP时有效\n            // 'successCode'       =\u003e  500, // 当成功时上报的默认code\n            // 'exceptionCode'     =\u003e  500, // 当发生异常时上报的默认code\n            'nameHandler'       =\u003e  function(\\Imi\\Server\\UdpServer\\Message\\IPacketData $data){\n                return $data-\u003egetFormatData()-\u003eaction ?? 'unknown'; // 代码仅供参考\n            },\n        ],\n    ],\n];\n```\n\n## 进阶使用\n\n如果请求产生异常，自动上报失败，错误码为异常 `code`。\n\n你也可以在代码中指定是否成功和错误码，例子：\n\n```php\nRequestContext::set('imi.tracker.success', false);\nRequestContext::set('imi.tracker.code', 19260817);\n```\n\n## 免费技术支持\n\nQQ群：17916227 [![点击加群](https://pub.idqqimg.com/wpa/images/group.png \"点击加群\")](https://jq.qq.com/?_wv=1027\u0026k=5wXf4Zq)，如有问题会有人解答和修复。\n\n## 运行环境\n\n- [PHP](https://php.net/) \u003e= 7.4\n- [Composer](https://getcomposer.org/) \u003e= 2.0\n- [Swoole](https://www.swoole.com/) \u003e= 4.7.0\n\n## 版权信息\n\n`imi-swoole-tracker` 遵循 MIT 开源协议发布，并提供免费使用。\n\n## 捐赠\n\n\u003cimg src=\"https://cdn.jsdelivr.net/gh/imiphp/imi@2.0/res/pay.png\"/\u003e\n\n开源不求盈利，多少都是心意，生活不易，随缘随缘……\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimiphp%2Fimi-swoole-tracker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fimiphp%2Fimi-swoole-tracker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimiphp%2Fimi-swoole-tracker/lists"}