PHP Academy · 课时

使用 Xdebug 分析 PHP 性能

启用 Xdebug 性能分析,并分析 callgrind 输出以找出运行缓慢的函数。

第 1 / 4 课13 个步骤

使用 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 反馈 — 无需本地设置。

此课程中的所有课时

  1. 使用 Xdebug 分析 PHP 性能
  2. OPcache:字节码缓存
  3. 优化数据库查询
  4. 内存管理与性能技巧
← 返回 PHP Academy