使用 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 协议》,转载必须注明作者和本文链接
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 2

没用过这个,跟xhprof有什么区别

4年前 评论
cnguu (楼主) 4年前

file
定时执行的命令行脚本文件会被纳入到分析文件中 但是在游览器执行的url就不会生成分析的文件 即使加了 ?XDEBUG_PROFILE 也没有作用 这个是什么问题呢

4年前 评论
cnguu (楼主) 4年前
cnguu (楼主) 4年前
止语 (作者) 4年前
止语 (作者) 4年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!