PHP 祖传代码跑路拯救者,支持 PHP5 & PHP7
如果你对线上一个项目运行逻辑不熟悉,或者你对某个方法的调用来源不清楚,又或者线上有一个接口不知道是哪里异常退出了,还有线上调用特别耗时,都比较适合使用 Deliverer 来解决,帮助你避免跑路。
原理是通过在PHP_MINIT阶段,通过zend_set_user_opcode_handler 来设置对 ZEND_DO_UCALL 、ZEND_DO_FCALL_BY_NAME、ZEND_DO_FCALL 三类 opcode 的处理分析。
以下 PHP 版本号是我和其他使用者线上实际使用都 OK 的版本号,理论上 PHP5 和 PHP7 都支持
- 5.3.29
- 5.4.32
- 5.6.40
- 7.0.33
- 7.1.33
- 7.2.5
如果安装遇到任何问题,可以加我微信 zhoumengkang
移动./bin/deliverer到你觉得合适的目录,比如到家目录
$ cd ./bin
$ mv deliverer ~/ && cd ~
$ chmod +x deliverer重新下载的目录
$ cd ./extension
$ phpize
$ ./configure --with-php-config=/usr/local/php/bin/php-config
$ make && sudo make installphpize 和 php-config 路径根据自己服务器修改
在php.ini追加以下内容
[deliverer]
extension=deliverer.sosudo service php-fpm restart用一段我自己很久之前的祖传代码(我的博客)来跑下
$ ~/deliverer -t这样会一直监控所有的 php 进程的执行
$ ~/deliverer -tAction::initUser -n3 -l5| 参数 | 值 | 解释 |
|---|---|---|
| -t | Action::initUser | 过滤包含该调用的请求 |
| -n | 3 | 统计三次然后退出 |
| -l | 5 | 函数(方法)调用深度显示,最多显示 5 层,超出部分在末尾标出 |
$ ~/deliverer -v7979-1624369150991941通过 -v requestId 来详细查看完整调用栈
$ ~/deliverer -tSqlExecute::getAll -n1 -l3当要查询方法,函数调用栈过深,不在层级查询范围之内,则其外层调用显示红色




