使用xdebug对php做性能分析调优
时间:2022-07-23
本文章向大家介绍使用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
- MYSQL官方与主流开源版本基准压测对比
- 基础知识:多人使用一个Github仓库
- 基于Ubuntu16.04的微信小程序搭建过程
- 搭建微信小程序教程:基于CentOS 7.6的教程
- MySQL根据5.1.34之前版本的一个BUG分析O_DIRECT
- Git面试常见问题
- 剑指offer代码解析——面试题17合并两个排序的链表
- MySQL优化方案(一)优化SQL脚本与索引
- 从0学习MySQL系列(二)安装篇
- 从0学习MySQL系列(三)概念篇
- SQL Server基础SQL脚本之主外键约束
- SQL Server基础SQL脚本之Group By
- SQL Server基础SQL脚本之内外连接、交叉连接;函数、子查询
- MySQL 面试选择题15道(单选)
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC