使用 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 协议》,转载必须注明作者和本文链接
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 2

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

5个月前 评论
cnguu (楼主) 5个月前

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

4个月前 评论
cnguu (楼主) 4个月前
cnguu (楼主) 4个月前
小月月是我我是小月月 (作者) 4个月前
小月月是我我是小月月 (作者) 4个月前

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!