简杰的php编程分享-1.3 xdebug性能分析

介绍

在上两期中我已经对 xdebug 最核心的操做已经进行了讲解。相信你能够摆脱写 var_dump($data);die; 的编写和完成调试后的清除了。这一期咱们来学习xdebug的第二个特点-性能分析。这一个功能,在实操中用的不是不少。php

使用场景:nginx

  1. 高并发项目的核心功能优化。经过查看运行一个方法通过的依赖耗时状况,进行代码优化。

环境说明

  • windows
  • vagrant+vbox+centos7+nginx+php
  • phpstorm

学前准备

  1. xdebug + phpstorm 调试环境已经能够正常运行

学习点

  1. 明白 xdebug 性能分析须要作那些配置
  2. 知道怎么去看性能报告

xdebug 配置

xdebug 是经过访问指定方法。生成性能分析文件,再经过分析软件进行查看性能结果。segmentfault

php.ini 添加配置windows

xdebug.profiler_enable=Off
xdebug.profiler_enable_trigger=On
xdebug.profiler_enable_trigger_value="create"
xdebug.profiler_output_dir="/tmp/"
xdebug.profiler_output_name="cachegrind.out.%R"

phpstorm 分析性能文件

比较建议一个方法访问完后,生成分析文件,立刻进行性能分析,分析完后再清除文件。为了数据准确性,咱们还须要进行屡次对比。找性能参数的平均值来提升准确性。centos

咱们得知道那个依赖方法耗时最久,是什么缘由。有没有优化的可能。并发

phpstorm xdebug 性能分析工具详解

咱们经过 tool -> Analyze Xdebug profiler Snapshot 打开性能分析文件 cachegrind.out. 打头的文件。就会进入如下界面
Analyze Xdebug profiler Snapshotphpstorm

一、了解各个选项的意思函数

  • Refresh - 刷新
  • Execution statistics - 执行统计数据
  • Call Trees - 哪一个函数调用哪一个函数
  • Callable - 已执行的文件
  • Own Time - 函数执行本身的代码所花费的时间(不包括对其余函数的调用)
  • Calls - 调用次数
  • Callees - 调用哪些函数
  • Callers - 从函数被调用的地方
  • time 前的数字表明的是什么意思

time 列里有 数字和百分比。分别表明 执行时间和执行占用总时间百分比高并发

单位是 server 旁边的 time 那里进行设置.默认是 ms工具

  • callees 里的方法大部分都会出来一个折叠的图标,有什么用

这个可让咱们查看他的上一步执行了以什么操做。这个能够方便咱们在了解调用到这个函数的过程。

二、找到咱们关心的数据

  • 那些地方占用的执行时间最多,为何

咱们能够在 Execution statistics 标签里对 own time 进行排序取执行占用最多的内容。里面会包含文件和函数以及方法。若是咱们设置了 server 关联当前的项目,统计里的方法是能够进行跳转到项目的实际代码里。

咱们经过 Callees 标签查看函数里那些方法调用耗时最多

  • 那些方法调用最屡次,在那些地方调用的比较多

Execution statistics 标签里对 calls 进行排序取执行次数最多的函数或方法。

可经过下面的 Callers 查看那些地方对他进行了调用

系列文章

  1. xdebug的安装配置
  2. xdebug的实际运用
  3. xdebug性能分析 [本篇]

FQA

  1. 为何要设置 xdebug.profiler_output_name 默认的不就能够了吗?

若是你的项目不是多入口的类型,你保存的到一个文件就会出现性能分析文件不精确的状况。而我在上文中用的是 $_SERVER['REQUEST_URI'] 做为文件后缀。能够很好的区分性能分析文件。

相关文章
相关标签/搜索