使用PhpStorm和Xdebug分析PHP应用程序

来源:互联网 发布:java开发工具怎么用 编辑:程序博客网 时间:2024/06/05 18:16

使用PhpStorm和Xdebug分析PHP应用程序


跳到元数据结束转到元数据的开始
 

本教程描述分析PHP应用程序PhpStorm和Xdebug。如果您更喜欢使用Zend Debugger,请参阅使用PhpStorm和Zend Debugger分析PHP应用程序

使用PhpStorm,我们可以分析我们的PHP代码的性能。分析允许我们收集程序执行统计信息,例如执行的函数的名称,函数的执行次数,函数执行的时间,调用的其他函数等等。这些信息可以给我们提示我们的代码可以改进的地方。

让我们看看这是如何工作的。

  • 要求
  • 1.启用Xdebug分析器
  • 2.捕获分析器快照
    • 2.1。捕获Web应用程序的分析器快照
    • 2.2。捕获CLI应用程序和单元测试的分析器快照
  • 3.分析探查器快照
    • 3.1。打开分析器快照
    • 3.2。执行统计信息选项卡
    • 3.3。调用树选项卡

要求

PhpStorm使用Xdebug来收集分析器信息。这个调试引擎必须在我们的系统上安装和配置。有关更多信息,请参阅“ Xdebug安装指南”

1.启用Xdebug分析器

分析为运行的应用程序增加了一些开销,并在磁盘上生成大量的信息。因此,最好只在需要时启用Xdebug分析器,然后将其禁用。

要全局启用Xdebug分析器,请编辑活动的php.ini文件并添加以下指令:

xdebug.profiler_enable=1
xdebug.profiler_output_dir=/path/to/store/snapshots
xdebug.profiler_enable_trigger=1

xdebug.profiler_enable启用或禁用分析器。xdebug.profiler_output_dir指定应该存储探查器快照数据的位置。如果未指定此设置,则Xdebug将默认为/ tmp文件夹。

图标

配置Xdebug分析器的好方法是php.ini中设置xdebug.profiler_output_dir在需要时设置xdebug.profiler_enable这可以通过在PhpStorm运行配置中指定附加的解释器选项来完成:

-d xdebug.profiler_enable = 1

这将启用配置文件的配置,但不能用于其他配置。

图标

Xdebug提供了两种启用分析器的方法,具体取决于我们要分析的应用程序的类型。设置  xdebug.profiler_enable指令可以为任何应用程序分析。对于Web应用程序,可以通过指定特殊的GET / POST变量或cookie来启用分析。这可以使用PhpStorm小书签  (或  浏览器调试扩展之一)并php.ini中将xdebug.profiler_enable_trigger指令设置1来完成

2.捕获分析器快照

为了能够分析探查器捕获的信息,我们首先必须收集这些信息。

2.1。捕获Web应用程序的分析器快照

要配置Web应用程序,请全局启用Xdebug事件探查器,或者使用PhpStorm小书签  (或其中一个  浏览器调试扩展)按需启动和停止事件探查器。接下来,在浏览器中打开应用程序以开始收集分析器数据。

图标

在分析性能问题时,使用bookmarklets或Browser Debugging Extension是一个非常好的方法:我们可以浏览我们的应用程序,并且仅在使用性能问题发生的功能时启用分析器。这允许捕获目标探查器快照。

2.2。捕获CLI应用程序和单元测试的分析器快照

要配置CLI应用程序和单元测试,请全局启用Xdebug事件探查器,或创建一个单独的启用事件探查器的“运行配置”。接下来,运行应用程序或单元测试以开始收集分析器数据。

在分析单元测试中的性能问题时,一个好的方法是创建一个单独的运行配置,它只运行怀疑有性能问题的单元测试。这允许捕获目标探查器快照。

3.分析探查器快照

我们来看一下profiler快照。

3.1。打开分析器快照

使用工具| 分析XDebug分析器快照菜单,我们可以打开一个分析器快照。

快照存储在php.ini中配置的目录中 ( 如果未明确配置,则为/ tmp)。生成的文件的名称始终以“cachegrind.out”开头。并以PHP或Web服务器进程的进程ID或包含最初调试脚本的目录的crc32散列结尾。

3.2。执行统计信息选项卡

在执行统计视图中,我们可以检查每个被调用函数的执行度量的摘要信息。我们可以看到所有文件,函数调用,调用次数以及执行时间(绝对和相对)。

顶部网格向我们展示了不同的指标:

  • 可调用 - 已执行的文件
  • 时间 - 总执行时间
  • 自己的时间 - 函数花在执行自己的代码上的时间(不包括对其他函数的调用)
  • 通话次数 - 通话次数

底部网格有两个选项卡,Callees(脚本调用的函数)和Callers调用脚本的地方)。我们也可以在这里看到各种指标:

  • 可调用 - 已执行的功能
  • 时间 - 总执行时间
  • 通话次数 - 通话次数

拥有较高时间和/或大量呼叫的功能绝对值得检查。

3.3。调用树选项卡

调用树视图显示我们的代码的执行路径。我们可以看到关于函数执行时间等的更多细节。

顶部网格显示我们调用树(哪些函数调用哪个函数)和不同的度量:

  • 可调用 - 已执行的文件
  • 时间 - 总执行时间
  • 通话次数 - 通话次数

底部网格有两个选项卡,Callees(正在调用的函数)和Callers调用函数的地方)。我们也可以在这里看到各种指标:

  • 可调用 - 已执行的功能
  • 时间 - 总执行时间
  • 通话次数 - 通话次数
原创粉丝点击