reli-prof:不装扩展、不改目标代码,从进程外采样 PHP 调用栈与内存图
项目地址:(最初为 sj-i/reli-prof。名字来源:strrev('php-profiler') = reliforp-php)
Reli 是用 PHP 写的采样剖析器(也是一个 VM 状态检查器)。它从进程外部读取正在运行的 PHP 脚本的信息。它是一个独立的 CLI 工具,因此目标程序不需要任何改动,也不需要加载扩展。
常见用途:调用栈采样(时间花在哪)、内存图分析(内存用在哪)、运行时变量检查,以及由条件触发的捕获。
版本要求:
- PHP(运行端,runner):8.4.0+
- PHP(目标端,target):7.0+
实时热帧:inspector:trace + watch rbt:analyze
在一个终端里把采样写入 .rbt,在另一个终端用 watch(1) 跑 rbt:analyze,就能得到持续刷新的「最热帧排行」——采样边采,数据边流进来。
# Terminal A — capture(.rbt 扩展名隐含 -f rbt)
$ reli inspector:trace -p
-o trace.rbt
# Terminal B — 每 0.2 秒刷新一次的实时分析
$ watch -n0.2 'reli rbt:analyze --last --last-depth=10 --top=10 --sections="tail,self+total" --crop-anchor=right --path=short --crop=auto ,以 CDDL 1.0 授权。
- 一些定义内部结构的 C 头文件提取自 php-src。
## 另见
- adsr/phpspy — Reli 受 phpspy 启发很大。两者的差异以及什么时候该用哪个,见 `docs/comparison.md`。