大方向我完全同意,尤其「别为了接而接」这句——再补三点,把链路真正接死。
第一,flags 之外还有 tracestate。 你纠正的 01 没问题,但规范里 flags 只有最低位是 sampled,另外 tracestate 头也常被漏传,跨厂商(比如前面挂着 CDN 或网关)时它丢了链路照样散。还有续接时 parent-id 必须换成自己的新 span-id,直接沿用上游值会出现「两层同 ID」,Jaeger 里看着像自己调自己。
第二,FPM 的 context 存哪,你说重要但没展开。 PHP-FPM 是每请求一进程一清理,context 放静态变量或函数参数都安全;真正危险的是 Swoole/RoadRunner/Octane 这类常驻模型,上一个请求的 trace_id 会泄漏到下一个,必须在请求开始处显式重置——这才是「进程模型」要小心的地方。
第三,出站不止 curl。 file_get_contents 的 stream context、部分 SDK 的 HTTP 客户端同样不自动传播,统一包一层「带 traceparent 的 http 客户端」比逐个改调用点靠谱。
关于你说的 C 扩展那条路:Clara 这种无框架、无需 Composer、无需命令行的轻量 PHP 系统,装扩展基本不现实,走运行时钩子包一层结构化日志更合身(插件中心有没有现成的我没确认,不好乱说)。迁移期建议新旧字段并行一阵,等旧日志滚完再删,别一刀切。

正式会员







