使用xdebug对php做性能分析调优
作为PHP程序员我们或多或少都了解或使用过xdebug。此文章记录安装和配置xdebug,以及如何使用它来分析php程序。
我的机器环境:
mac,php
安装 xdebug
推荐使用 pecl 安装扩展
pecl install xdebug
注:可以选择版本, https://pecl.php.net/package/xdebug
启用和配置
如果不知道php的配置文件,可以用 php --ini 查看
启用 xdebug,添加一个独立的 ext-xdebug.ini 到 php 的配置目录
[xdebug]
zend_extension="xdebug.so"
# profiler功能的开关,默认值0,如果设为1,则每次请求都会生成一个性能报告文件。
# xdebug.profiler_enable=0
# 默认值是0,如果设为1 则当我们的请求中包含 XDEBUG_PROFILE 参数时才会生成性能报告文件
xdebug.profiler_enable_trigger=1
# 分析文件保存目录, 默认是 /var/tmp
xdebug.profiler_output_dir="/var/tmp/xdebug"
现在使用 php -m 能看到 xdebug,并且使用 php --ri xdebug 能看到配置项都生效就ok了。
访问并生成分析文件
使用 fpm 要重启,扩展才能生效
现在我们可以访问php项目,记得在请求参数带上 XDEBUG_PROFILE, 类似 http://127.0.0.1:5671/my?XDEBUG_PROFILE
ok, 现在xdebug应该已经在我们配置的分析文件保存目录产生了文件, 类似
% ll /var/tmp/xdebug
-rw-r--r--  1 user  group    48K  4 29 13:40 cachegrind.out.37947
生成的分析文件直接查看是难以阅读的。所以我们要使用分析查看工具
分析查看工具
使用qcachegrind
要查看分析图表,需要安装 graphviz:
brew install graphviz
安装qcachegrind
brew install qcachegrind
在命令行里使用 qcachegrind 打开它,然后通过它打开要分析的文件。
也可以在命令后直接跟要分析的文 qcachegrind /var/tmp/xdebug/cachegrind.out.37947
使用webgrind
下载: https://github.com/jokkedk/webgrind
要查看分析图表,同样需要安装 graphviz.
分析的时候 "Call Graph" 功能用不了
- 方法 1
 
sudo ln -s /usr/local/bin/dot /usr/bin/dot
- 方法 2 修改 
config.php 
    /**
     * Path to graphviz dot executable
     */
    static $dotExecutable = '/usr/local/bin/dot';
    // static $dotExecutable = '/usr/bin/dot';
运行:
php -S 0.0.0.0:80 index.php
现在,你可以访问: http://localhost



使用xdebug对php做性能分析调优的更多相关文章
- mysql性能瓶颈分析、性能指标、指标搜集方法与性能分析调优工具
		
本文主要讲解mysql的性能瓶颈分析.性能指标.性能指标信息的搜集工具与方法.分析调优工具的使用. 文章尚未完成. 性能瓶颈: 慢.写速度比读速度慢很多 主要的性能指标: 访问频度, 并发连接量, ...
 - Linux性能分析调优工具介绍
		
1.常用性能分析工具 1)CPU性能分析工具 vmstat ps sar time strace pstree top 2)Memory性能分析工具 vmstat strace top ipcs ip ...
 - Linux 性能分析调优 (四)——案例篇:系统中出现大量不可中断进程和僵尸进程怎么办
		
之前讲到 CPU 使用率的类型.除了上一节提到的用户 CPU 之外,它还包括系统 CPU(比如上下文切换).等待 I/O 的 CPU(比如等待磁盘的响应)以及中断 CPU(包括软中断和硬中断)等. 在 ...
 - PHPStorm 初遇 Xdebug (xdebug代码调试及性能分析)
		
centos 7 下PHP7安装xdebug # 下载xdebug wget https://xdebug.org/files/xdebug-2.7.2.tgz # 解压 tar -xf xdebug ...
 - Python:用pyinstrument做性能分析
		
导引 在计算密集型计算或一些Web应用中,我们常常需要对代码做性能分析.在Python中,最原始的方法即是使用time包中的time函数(该函数以秒为计时单位): from time import s ...
 - chrome使用Timeline做性能分析
		
使用Timeline做性能分析 Timeline面板记录和分析了web应用运行时的所有活动情况,这是研究和查找性能问题的最佳途径.###Timeline面板概览 Timeline面板主要有三个部分构成 ...
 - 《linux性能及调优指南》 3.5 网络瓶颈
		
3.5 Network bottlenecks A performance problem in the network subsystem can be the cause of many prob ...
 - 《Linux 性能及调优指南》写在后面的话
		
感谢飞哥的翻译. 目前飞哥 (http://hi.baidu.com/imlidapeng)的网址已经不能访问了. <Linux 性能及调优指南>这本书的原文地址:http://www.r ...
 - Linux服务器性能查看分析调优
		
一 linux服务器性能查看 1.1 cpu性能查看 1.查看物理cpu个数: cat /proc/cpuinfo |grep "physical id"|sort|uniq|wc ...
 
随机推荐
- 使用 PXE+Kickstart 实现无人值守批量部署系统
			
一.废话两句 在云数据中心,一次几十台甚至几百台服务器上线,系统安装将变得非常繁琐,系统安装好了后还会涉及很多配置,如果一台台来安装的话工作量非常大.(虽然有加班费,开个玩笑)为了解决这个问题,我们需 ...
 - python_数据分析_正态分布
			
Kolmogorov-Smirnov 与 Shapiro-Wilk 模型正态分布检验 Spss stata R语言正态分布 install.packages("nortest") ...
 - odoo10学习笔记九:Odoo10 API
			
转载请转载原文地址:https://www.cnblogs.com/ygj0930/p/11189315.html 一:纪录集API model中的数据是以集合的形式使用的,因此可以使用集合运算来操作 ...
 - openstack 创建实例报错 **aborted: Failed to allocate the network(s), not rescheduling
			
消息 Build of instance 6320b5f2-edc2-4e8e-b07c-0047f7ed8f6a aborted: Failed to allocate the network(s) ...
 - docker研究-4 docker镜像制作
			
这次实验以centos镜像为基础镜像进行相关docker镜像制作. 1. 下载centos镜像 [root@localhost ~]# docker pull centosUsing default ...
 - Constructing Roads POJ - 2421
			
题目链接:https://vjudge.net/problem/POJ-2421 思路:一些村庄,建一些路,使得所有村庄能相连,而且使得所有路长度之和最短. 题目说了,有些村庄之间已经建了路,说明有些 ...
 - jmeter插件
			
https://jmeter-plugins.org/install/Install/ plugins-manager.jar放到 lib/ext中,重启可以发现JMeter Plugins Mana ...
 - 多模态数据联合Embedding的方法小结
			
当模型需要接受多个模态的数据时,往往需要设计合适的方法让他们能进行信息的融合,Joint embedding是一种较为普遍的思路,即将他们映射到同一个向量空间中,再进行融合. 向量拼接.元素级相乘.做 ...
 - js获取长度,根据编码获取长度
			
dataLen:function(str){ var realLength = 0, len = str.length, charCode = -1; for(var i = 0; i < le ...
 - 2019 年 Java 最新面试指南共 80 题,赶快收藏起来吧!
			
2019 年 Java 最新面试指南共 80 题,赶快收藏起来吧! http://blog.zh66.club/index.php/archives/116/