使用 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 协议》,转载必须注明作者和本文链接
cnguu
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 2

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

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

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

1周前 评论
cnguu (楼主) 1周前
cnguu (楼主) 1周前
小月月是我我是小月月 (作者) 1周前
小月月是我我是小月月 (作者) 1周前

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