xdebug3开启profile和trace

【xdebug开启profiler】

https://xdebug.org/docs/profiler

http://www.xdebug.org.cn/docs/profiler

1、php.ini添加下面配置然后重启php容器:

php 复制代码
xdebug.mode=profile
;这个目录保存profile和trace文件
xdebug.output_dir =/var/tmp/xdebug

PHP日志提示报错:

PHP message: Xdebug: [Profiler] File '/var/tmp/xdebug/cachegrind.out.8' could not be opened

解决方案:将/var/tmp/xdebug目录权限设置成777:

chmod 777 /var/tmp/xdebug

这个目录最好换成挂载的项目路径下,这样才能在本地环境下查看生成的profile文件,比如:

xdebug.output_dir = /www/php_demo/xdebug

也可以换成下面的配置,就可以在当前执行方法的文件下生成profile文件:

xdebug.output_dir = ./

2、phpstorm开启debug,执行一下要追踪的方法,就会生成profile文件

生成文件的名称总是以 "cachegrind.out."开头,默认情况下以 PHP(或 Apache)进程的 PID(进程 ID)结尾。您可以使用 xdebug.profiler_output_name 更改文件名格式。

3、分析 Profiles

(1)通过phpstorm分析

双击shift,启动万能的搜索框,输入"Analyze Xdebug Profiler Snapshot"回车即可选择分析profile文件。

(2)通过QCacheGrind分析

下载地址:https://sourceforge.net/projects/qcachegrindwin/
注意:
1、修改php.ini xdebug.use_compression参数配置。将其设为false。否则生成的profile文件是带有gz后缀的压缩文件,QCacheGrind无法打开这个格式的文件。
2、如果打开文件目录时找不到文件,把搜索文件类型修改为"All File"

[自主选择是否生成profile]

xdebug2和xdebug3的配置是不一样的:

xdebug2是使用下面的配置:

php 复制代码
;下面这两个参数在xdebug3都被移除了,参考文档:https://xdebug.org/docs/upgrade_guide
;xdebug.profiler_enable = 1
;xdebug.profiler_enable_trigger = 1

xdebug3是使用下面的配置:

php 复制代码
php.ini配置加上:
;这个配置使得只有在请求开始时存在特定触发器时,功能才会被激活。
;https://local.phpdemo.com/?XDEBUG_PROFILE=1 请求后面带有特定的标识才会执行对应的操作,比如生成profile文件
;https://xdebug.org/docs/all_settings#start_with_request
xdebug.start_with_request=trigger

访问接口的时候,加上XDEBUG_PROFILE参数即可,value可以为任意值
https://local.phpdemo.com/?XDEBUG_PROFILE=1

php 复制代码
;通过 xdebug.trigger_value,您可以控制激活触发器的具体触发值。如果 xdebug.trigger_value 设置为空字符串,则任何值都可以触发。
;如果加上这个配置,访问接口得是:http://local.phpdemo.com/?XDEBUG_PROFILE=cowboy,才会激活。要对接口加上断点调试,就得加上XDEBUG_SESSION=cowboy
xdebug.trigger_value=cowboy

【xdebug开启trace】

php.ini配置:

php 复制代码
xdebug.mode=debug,profile,trace
;这个目录保存profile和trace文件,要先设置777权限
xdebug.output_dir = /www/php_demo/xdebug
;指定trace的文件显示格式,默认是0;生成的文件直接拉到浏览器就能打开了。
xdebug.trace_format = 3

同样访问格式:http://local.phpdemo.com/?XDEBUG_TRACE=cowboy
生成的trace文件直接拉到浏览器就能打开了。

最终的php.ini配置文件:

php 复制代码
;xdebug3用下面的配置
xdebug.remote_enable = 1
xdebug.remote_handler = "dbgp"
;xdebug.mode=debug
xdebug.client_host=host.docker.internal
xdebug.client_port=9003
xdebug.idekey=PHPSTORM

;开启profile(注意:可以设置多个xdebug模式,比如xdebug.mode=debug,trace,profile)
xdebug.mode=debug,profile,trace
;这个目录保存profile和trace文件,要先设置777权限
xdebug.output_dir = /www/php_demo/xdebug
;关闭压缩,qcachegrind 工具不支持.gz 格式的分析日志。phpstorm就可以支持分析压缩文件
xdebug.use_compression = false

;下面这两个参数在xdebug3都被移除了,参考文档:https://xdebug.org/docs/upgrade_guide
;xdebug.profiler_enable = 1
;xdebug.profiler_enable_trigger = 1

;这个配置使得只有在请求开始时存在特定触发器时,功能才会被激活。
;https://local.phpdemo.com/?XDEBUG_PROFILE=1 请求后面带有特定的标识才会执行对应的操作,比如生成profile文件
;https://xdebug.org/docs/all_settings#start_with_request
xdebug.start_with_request=trigger
;通过 xdebug.trigger_value,您可以控制激活触发器的具体触发值。如果 xdebug.trigger_value 设置为空字符串,则任何值都可以触发。
;如果加上这个配置,访问接口得是:http://local.phpdemo.com/?XDEBUG_PROFILE=cowboy,才会激活。
xdebug.trigger_value=cowboy

;指定trace的文件显示格式,默认是0;生成的文件直接拉到浏览器就能打开了。
xdebug.trace_format = 3
相关推荐
Q_Q5110082852 小时前
python+django/flask成都奥科厨具厂产品在线销售系统
vue.js·spring boot·python·django·flask·node.js·php
白熊1884 小时前
【推荐算法】注意力机制与兴趣演化:推荐系统如何抓住用户的心?
算法·php·推荐算法
Q_Q5110082855 小时前
python+django/flask+uniapp宠物中心信息管理系统app
spring boot·python·django·flask·uni-app·node.js·php
hunzi_119 小时前
PHP商城源码:构建高效电商平台的利器
开发语言·php
SDL大华19 小时前
【备忘】PHP web项目一般部署办法
开发语言·php
kdniao202520 小时前
快递接口调用选择:快递鸟、快递100、阿里云大对比
人工智能·阿里云·php
别NULL1 天前
《TCP/IP 详解 卷1:协议》第6章:DHCP和自动配置
网络协议·tcp/ip·php
Le_ee1 天前
pikachu——php反序列化
网络安全·靶场·php·pikachu·php反序列
开开心心就好2 天前
电脑扩展屏幕工具
java·开发语言·前端·电脑·php·excel·batch
AI风老师2 天前
通信网络基础概念
开发语言·网络·php