使用 Xdebug 分析 PHP 性能
启用 Xdebug 性能分析,并分析 callgrind 输出以找出运行缓慢的函数。
使用 Xdebug 分析 PHP 性能 是 CoddyKit 上的免费 PHP Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 PHP Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 PHP Academy 课程共包含 4 节课。
Xdebug 是什么
Xdebug 是一个提供调试、代码覆盖率和性能分析功能的 PHP 扩展。性能分析器会记录每次函数调用的耗时和调用次数。
安装 Xdebug
请通过 PECL 或包管理器安装。
# Via PECL:
$ pecl install xdebug
# Via apt:
$ apt install php-xdebug
# Verify:
$ php -v | grep Xdebug启用性能分析器
在 php.ini 中配置 Xdebug,以启用性能分析。
# php.ini
[xdebug]
zend_extension=xdebug.so
xdebug.mode=profile
xdebug.output_dir=/tmp/xdebug
xdebug.profiler_output_name=cachegrind.out.%t基于触发器的性能分析
不要分析每个请求,而是使用触发器按需进行性能分析。
# php.ini
xdebug.mode=profile
xdebug.start_with_request=trigger
# Trigger via query parameter or cookie:
curl "https://example.com/?XDEBUG_PROFILE=1"Callgrind 输出
Xdebug 会写入一个 cachegrind.out.* 文件。性能分析可视化工具可以读取这种格式。
使用 KCachegrind / QCachegrind 分析
在 KCachegrind(Linux)或 QCachegrind(macOS/Windows)中打开 callgrind 文件,即可查看:函数调用次数、总耗时、自身耗时和调用树。
使用 WebGrind 分析
WebGrind 是一个基于浏览器的 callgrind 查看器,比桌面工具更容易设置。
$ docker run -p 8080:80 jokkedk/webgrind -v /tmp/xdebug:/tmp读取性能分析器输出
请查找“包含调用开销”最高的函数(包括被调用函数耗时的总耗时),并将其与“自身开销”(仅函数体内的耗时)进行比较。自身开销可以揭示实际瓶颈。
发现的常见瓶颈
典型问题包括:N+1 数据库查询、低效的正则表达式、冗余的 API 调用、未优化的 Eloquent 关系,以及开销很大的视图渲染。
性能分析与调试
性能分析用于衡量性能(耗时、调用次数)。调试(也是 Xdebug 的功能)会在断点处暂停执行,以便检查代码。请使用不同的 Xdebug 模式。
Blackfire 作为替代方案
Blackfire.io 是一种商业性能分析工具,提供完善的用户界面、CI 集成和性能断言。对于团队环境而言,它比直接使用 Xdebug 性能分析更受推荐。
总结
在 php.ini 中启用 Xdebug 性能分析模式,触发一个请求,然后在 KCachegrind 或 WebGrind 中打开 callgrind 文件。请重点关注包含调用开销和自身开销最高的函数,以找出瓶颈。
快速检查
性能分析报告中的“自身开销”是什么意思?
用 AI 导师学习 PHP — 免费
在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。
- 课程
- 49
- 课程
- 195
常见问题解答
「使用 Xdebug 分析 PHP 性能」课时是免费的吗?
是的 — 「使用 Xdebug 分析 PHP 性能」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 PHP Academy 课程的其余内容,请升级到 CoddyKit PRO。 PHP Academy 课程共包含 4 节课。
「使用 Xdebug 分析 PHP 性能」这节课中我会学到什么?
启用 Xdebug 性能分析,并分析 callgrind 输出以找出运行缓慢的函数。 你通过在浏览器中直接运行的动手代码来练习 PHP Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 PHP Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 PHP Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「使用 Xdebug 分析 PHP 性能」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 PHP Academy 课中编写并运行代码吗?
能。每节 PHP Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 使用 Xdebug 分析 PHP 性能
- OPcache:字节码缓存
- 优化数据库查询
- 内存管理与性能技巧