节点在线、应用在线、配置在线使用令牌查询
|
# PHP SDK 实现总结
## 概述
本次更新为星尘(Stardustï¼‰é¡¹ç›®å¢žåŠ äº†å®Œæ•´çš„ PHP SDK 支æŒï¼Œä½¿ PHP 应用能够接入星尘的 APM 监控和é…ç½®ä¸å¿ƒåŠŸèƒ½ã€‚
## 实现内容
### 1. æ ¸å¿ƒ SDK 文件
#### StardustTracer.php (APM 监控)
- **StardustSpan ç±»**:追踪片段,记录å•个æ“作的性能数æ®
- 自动生æˆå”¯ä¸€ IDã€è¿½è¸ª ID
- 支æŒçˆ¶å关系(嵌套追踪)
- 支æŒè®¾ç½®æ ‡ç¾å’Œé”™è¯¯ä¿¡æ¯
- **StardustSpanBuilder ç±»**:片段èšåˆå™¨
- èšåˆåŒä¸€æ“作的多个片段
- 统计总数ã€é”™è¯¯æ•°ã€è€—æ—¶ç‰æŒ‡æ ‡
- æ”¯æŒæ£å¸¸æ ·æœ¬å’Œé”™è¯¯æ ·æœ¬åˆ†åˆ«é‡‡é›†
- **StardustTracer 类**:追踪器主类
- 登录认è¯ï¼ˆApp/Login)
- å¿ƒè·³ä¿æ´»ï¼ˆApp/Ping)
- 创建追踪片段
- 批é‡ä¸ŠæŠ¥æ•°æ®ï¼ˆæ”¯æŒ JSON å’Œ GZIP 压缩)
- 自动应用æœåŠ¡å™¨è¿”å›žçš„é…ç½®ï¼ˆé‡‡æ ·çŽ‡ã€æŽ’é™¤è§„åˆ™ç‰ï¼‰
- 支æŒè‡ªåЍ关é—å‡½æ•°å’Œæ‰‹åŠ¨ä¸ŠæŠ¥ä¸¤ç§æ¨¡å¼
#### StardustConfig.php (é…ç½®ä¸å¿ƒ)
- **StardustConfig ç±»**:é…ç½®ä¸å¿ƒå®¢æˆ·ç«¯
- 登录认è¯
- èŽ·å–æ‰€æœ‰é…置(GetAll)
- 获å–å•个é…置项(get)
- 版本管ç†å’Œå˜æ›´æ£€æµ‹
- 支æŒä½œç”¨åŸŸï¼ˆdev/test/prod)
- 支æŒé…ç½®çƒæ›´æ–°æ£€æŸ¥
### 2. 示例代ç
#### apm_basic.php
- 基本埋点示例
- 错误处ç†ç¤ºä¾‹
- 嵌套追踪示例
- æ‰¹é‡æ“作示例
#### config_basic.php
- é…置拉å–示例
- å•个é…置项获å–示例
- é…置版本检查示例
- é…ç½®çƒæ›´æ–°è½®è¯¢ç¤ºä¾‹
#### laravel_middleware.php
- Laravel 框架集æˆç¤ºä¾‹
- ä¸é—´ä»¶æ–¹å¼æŽ¥å…¥
- 自动追踪所有 HTTP 请求
#### swoole_server.php
- Swoole 常驻进程集æˆç¤ºä¾‹
- å®šæ—¶ä¸ŠæŠ¥å’Œå¿ƒè·³ä¿æ´»
- HTTP æœåС噍集æˆ
#### verify.php
- SDK éªŒè¯æµ‹è¯•脚本
- æ£€æŸ¥ç±»å’Œæ–¹æ³•æ˜¯å¦æ£ç¡®åŠ è½½
- 验è¯åŸºæœ¬åŠŸèƒ½æ˜¯å¦æ£å¸¸
- 检查 PHP 版本和必需扩展
### 3. 文档
#### SDK/PHP/README.md
详细的 SDK 使用文档,包å«ï¼š
- 功能特性介ç»
- 快速开始指å—
- æ ¸å¿ƒç±»è¯´æ˜Ž
- 使用场景(PHP-FPMã€Laravelã€Swoole)
- 高级特性(嵌套追踪ã€é”™è¯¯å¤„ç†ã€è‡ªå®šä¹‰æ ‡ç¾ï¼‰
- 性能优化建议
- 故障排查指å—
#### Doc/SDK/stardust-sdk-php.md
更新已有文档:
- æ·»åŠ åŠŸèƒ½ç‰¹æ€§è¯´æ˜Ž
- æ·»åŠ é…ç½®ä¸å¿ƒä½¿ç”¨ç¤ºä¾‹
- æ·»åŠ æ ¸å¿ƒç±»ç®€ä»‹
- æ·»åŠ ä½¿ç”¨åœºæ™¯è¯´æ˜Ž
- 引用完整文档和示例
#### Readme.MD
更新主 README:
- æ·»åŠ "多è¯è¨€ SDK 支æŒ"ç« èŠ‚
- 展示 PHP SDK 快速开始示例
- 列出所有支æŒçš„è¯è¨€ SDK
## 技术特点
### 1. é›¶ä¾èµ–
- ä»…ä¾èµ– PHP 内置的 cURL å’Œ JSON 扩展
- æ— éœ€å®‰è£…ç¬¬ä¸‰æ–¹åŒ…
- 部署简å•ï¼Œå³æ‹¿å³ç”¨
### 2. è½»é‡çº§
- æ ¸å¿ƒä»£ç 约 500 行
- 内å˜å 用å°
- 性能开销低
### 3. 易于使用
- 简æ´çš„ API 设计
- å‡ è¡Œä»£ç å³å¯å®ŒæˆæŽ¥å…¥
- 丰富的示例代ç
### 4. 功能完整
- æ”¯æŒ APM 监控(性能追踪ã€é”™è¯¯ç›‘控ã€è°ƒç”¨é“¾ï¼‰
- 支æŒé…ç½®ä¸å¿ƒï¼ˆé…置拉å–ã€ç‰ˆæœ¬ç®¡ç†ã€çƒæ›´æ–°ï¼‰
- 支æŒåµŒå¥—追踪
- æ”¯æŒ GZIP 压缩
- 支æŒè‡ªåŠ¨ä»¤ç‰Œåˆ·æ–°
### 5. 适é…多ç§åœºæ™¯
- PHP-FPM / Apache mod_php(请求-å“应模å¼ï¼‰
- Laravel / Symfony ç‰æ¡†æž¶ï¼ˆä¸é—´ä»¶é›†æˆï¼‰
- Swoole / Workerman(常驻进程模å¼ï¼‰
## 测试结果
### è¯æ³•检查
- ✅ StardustTracer.php - æ— è¯æ³•错误
- ✅ StardustConfig.php - æ— è¯æ³•错误
- ✅ 所有示例文件 - æ— è¯æ³•错误
### 功能验è¯
è¿è¡Œ verify.php 测试脚本,所有测试通过:
- ✅ ç±»åŠ è½½æµ‹è¯•
- ✅ 实例创建测试
- ✅ 方法å˜åœ¨æ€§æµ‹è¯•
- ✅ Span åˆ›å»ºå’Œå®Œæˆæµ‹è¯•
- ✅ SpanBuilder èšåˆæµ‹è¯•
- ✅ PHP 版本检查(8.3.6)
- ✅ 必需扩展检查
## 文件统计
```
SDK/PHP/
├── src/
│ ├── StardustTracer.php (519 行)
│ └── StardustConfig.php (274 行)
├── examples/
│ ├── apm_basic.php (84 行)
│ ├── config_basic.php (93 行)
│ ├── laravel_middleware.php (81 行)
│ ├── swoole_server.php (94 行)
│ └── verify.php (157 行)
└── README.md (426 行)
总计:约 1835 行(包括注释和空行)
```
## API 兼容性
SDK å®žçŽ°å®Œå…¨ç¬¦åˆæ˜Ÿå°˜æœåŠ¡å™¨çš„ API 规范:
- `/App/Login` - 登录认è¯
- `/App/Ping` - å¿ƒè·³ä¿æ´»
- `/Trace/Report` - 上报追踪数æ®ï¼ˆJSON)
- `/Trace/ReportRaw` - 上报追踪数æ®ï¼ˆGZIP)
- `/Config/GetAll` - 获å–é…ç½®
## 使用示例
### 最简å•çš„ APM 接入
```php
require_once 'SDK/PHP/src/StardustTracer.php';
$tracer = new StardustTracer('http://star.example.com:6600', 'MyApp', 'secret');
$tracer->login();
$span = $tracer->newSpan('处ç†è®¢å•');
// ... 业务逻辑
$span->finish();
// 自动上报(register_shutdown_function)
```
### 最简å•çš„é…ç½®ä¸å¿ƒæŽ¥å…¥
```php
require_once 'SDK/PHP/src/StardustConfig.php';
$config = new StardustConfig('http://star.example.com:6600', 'MyApp', 'secret', 'prod');
$config->login();
$dbHost = $config->get('database.host', 'localhost');
$dbPort = $config->get('database.port', 3306);
```
## åŽç»å»ºè®®
1. **社区å馈**:收集 PHP å¼€å‘者的使用å馈,æŒç»ä¼˜åŒ–
2. **性能测试**:在实际生产环境ä¸è¿›è¡Œæ€§èƒ½æµ‹è¯•和优化
3. **包管ç†**:考虑å‘布到 Composer/Packagist,方便安装
4. **更多示例**ï¼šæ·»åŠ æ›´å¤šå®žé™…åœºæ™¯çš„ç¤ºä¾‹ï¼ˆWordPressã€ThinkPHP ç‰ï¼‰
5. **å•元测试**ï¼šæ·»åŠ PHPUnit å•元测试覆盖
## 相关链接
- PHP SDK 详细文档:[SDK/PHP/README.md](/NewLife/Stardust/Blob/master/SDK/PHP/../README.md)
- 星尘项目主页:https://github.com/NewLifeX/Stardust
- 在线演示:http://star.newlifex.com
## 贡献者
- GitHub Copilot (@copilot)
- NewLife 团队 (@nnhy)
|