ThinkPHP 5.1 接入 SkyWalking 需通过官方 PHP Agent(v1.0+)在入口、DB、HTTP 等节点注入 Span 并上报至 OAP;要求 PHP ≥7.2、启用 opcache/curl,配置 skywalking.so 扩展及 grpc 地址,适配 TP5.1 生命周期并验证链路数据。

ThinkPHP 5.1 本身不内置分布式链路追踪能力,要接入 SkyWalking 实现 APM(应用性能监控)和全链路追踪,核心在于:通过官方 PHP Agent 或兼容 OpenTracing 的 SDK,在请求入口、HTTP 客户端、数据库操作等关键节点注入 Span,并将 trace 数据上报至 SkyWalking OAP 服务。
确认环境与组件兼容性
SkyWalking 官方 PHP Agent(skywalking-php)从 v1.0 开始支持 ThinkPHP 5.1,但需注意:
- PHP 版本 ≥ 7.2(推荐 7.4+),且启用
opcache和curl扩展 - ThinkPHP 5.1 应使用
thinkphp/library/think/Request.php等标准生命周期钩子,避免自定义路由或中间件绕过框架初始化流程 - OAP 服务版本建议 ≥ 9.0,确保支持 PHP Agent 的 v1.x 协议
集成 SkyWalking PHP Agent
不依赖 Composer 包管理,而是以扩展方式加载 Agent:
- 下载对应 PHP 版本的
skywalking.so(预编译或源码编译),放入extension_dir - 在
php.ini中添加:extension=skywalking.soskywalking.app_code=your_app_nameskywalking.backend_grpc_host=127.0.0.1:11800 - 重启 PHP-FPM 或 Apache,执行
php -m | grep skywalking验证加载成功
适配 ThinkPHP 5.1 生命周期打点
Agent 默认能自动捕获 HTTP 入口(如 Apache/Nginx 模块下请求),但在 CLI 或 Swoole 场景需手动埋点。针对 TP5.1 常见场景补充如下:
立即学习“PHP免费学习笔记(深入)”;
- 在
application/common.php或start.php开头调用\SkyWalking\Trace\Tracer::start();(非必须,仅增强控制) - 数据库层:TP5.1 使用 PDO/MySQLi,Agent 已自动拦截
PDO::query、mysqli_query等方法,无需改 Model 代码 - HTTP 外调:若使用
think\Http或cURL,需启用 Agent 的 cURL hook(默认开启),或手动 wrap 请求逻辑添加Tracer::createExitSpan() - 自定义服务调用:在 Service 类方法中,用
Tracer::createLocalSpan('service::doSomething')包裹业务逻辑
验证与调试链路数据
部署后访问任意接口(如 /index/index/hello),检查:
- 查看 SkyWalking UI(http://your-oap-ip:8080)→ Topology → 是否出现你的应用节点
- 进入 Trace 页面,筛选该应用,观察是否有完整 Span 链:Entry(HTTP)、Exit(DB/curl)、Local(业务方法)
- 若无数据,检查 PHP 错误日志中是否含
skywalking相关 warning;用tcpdump -i lo port 11800确认上报连通性 - 开启 Agent 调试日志:
skywalking.log_level=DEBUG,日志默认输出到/tmp/skywalking.log



















