使用 XDebug + Webgrind 进行 PHP 程序性能分析
准备
- 安装 XDebug 扩展
- 开启
Profiler
性能跟踪器;php.ini xdebug.profiler_enable = 1 xdebug.profiler_enable_trigger = 1
- 下载 Webgrind
Webgrind
因为 Profiler
生成的性能记录文件的格式,不是给人看的,所以需要 Webgrind
图形界面的分析工具
:: tip
Webgrind 本质上是一个 PHP 网站程序
::
使用
在需要分析的 Url 后面接上 ?XDEBUG_PROFILE
,例如:http://localhost:8000/?XDEBUG_PROFILE
然后刷新 Webgrind 网页,最新的数据就会显示
选项
Show 90%
所有被调用的函数和方法由高到低排序,然后取出耗时比率之和在 90%~100% 之间的前 N 个
of Auto(newest)
选择生成的 Profiler 文件,默认是最新一次的 XDebug 分析记录
in percent
显示百分比、毫秒或微秒
四色胶囊条
- 蓝色:PHP 内置函数
- 灰色:require/include
- 绿色:方法
- 橙色:自定义函数
Invocation count
表示整个 PHP 页面从载入到执行完毕,函数被调用的总次数
Total Self Cost
表示自身从开始到执行完毕所用消耗(不包括其他函数消耗)
Total Inclusive Cost
表示自身从开始到执行完毕所用消耗(包括其他函数消耗)
Calls
表示自身调用并执行的所有函数/方法名、次数及耗时
Total Call Cost
表示被调用执行的总耗时
Count
表示被调用执行的次数
总结
对公司现后台分析,果然,最耗时的还是数据库部分
本作品采用《CC 协议》,转载必须注明作者和本文链接
:bug: 我的小破站
没用过这个,跟xhprof有什么区别
定时执行的命令行脚本文件会被纳入到分析文件中 但是在游览器执行的url就不会生成分析的文件 即使加了 ?XDEBUG_PROFILE 也没有作用 这个是什么问题呢