作为PHP程序员我们或多或少都了解或使用过xdebug。此文章记录安装和配置xdebug,以及如何使用它来分析php程序。

我的机器环境: macphp

安装 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

最新文章

  1. 水印第三版 ~ 变态水印(这次用Magick.NET来实现,附需求分析和源码)
  2. leetcode 397
  3. JAVA 多线程随笔 (二) sleep, yield, join, wait 和notify
  4. java并发编程学习笔记(一)初识并发原子性
  5. Linux+I2C总线分析(主要是probe的方式)
  6. oracle第一招之神马都是浮云
  7. javascript 中 in操作符
  8. 07_XPath_02_常用语法
  9. 重新开始学习javase_对象的初始化
  10. PID教程
  11. ABP模块系统
  12. IOS开发—UITableView重用机制的了解
  13. 解决MySQL8.0报错:Unknown system variable 'validate_password_policy'
  14. Atitit 计算word ppt文档的页数
  15. CSharp陷阱1
  16. 开发错误处理记录(无法激活服务,因为它不支持 ASP.NET 兼容性)
  17. Digest Authentication 摘要认证
  18. UIGestureRecognizer学习笔记
  19. BZOJ 1237 配对(DP)
  20. week05《Java程序设计》第五次学习总结

热门文章

  1. 凯哥带你用python撸算法之雪花算法
  2. vnc服务器和windows2012密钥
  3. Hibernate与Mybatis 对比
  4. 安装教程-VMware 12 安装Ubuntu 19.04 桌面版
  5. 【洛谷P3749】[六省联考2017]寿司餐厅(网络流)
  6. VC 静态库与动态库(一)介绍
  7. VUE小练习(按钮颜色,数组映射)
  8. 4-ESP8266 SDK开发基础入门篇--串口
  9. [LeetCode] 5. Longest Palindromic Substring 最长回文子串
  10. Spring mvc 前后台通过json交互【转】