本文目录导读:

对于 Laravel 性能分析,虽然 XHProf 曾经是主流选择,但现在更推荐使用它的继任者或更现代的替代方案。
直接回答:不建议再用原生的 XHProf(已停止维护多年),以下是详细的现状分析和推荐方案。
XHProf 的现状:已过时,但仍有“精神继承者”
- XHProf (Facebook):已停止维护多年,不再支持 PHP 7+ 的部分特性。
- Tideways XHProf:一个现代的、兼容 PHP 7/8 的 XHProf 分支,是目前最接近 XHProf 且可用性高的扩展。
- Uprofiler:另一个轻量级替代,但功能有限。
如果你一定要用类似 XHProf 的底层 profiling 方式,请使用 Tideways XHProf,而不是原版 XHProf。
强烈推荐的 Laravel 性能分析工具(按场景选择)
开发环境、本地调试(最推荐)
工具:Laravel Debugbar + Laravel Telescope
- Laravel Debugbar:在页面底部显示面板,清晰展示查询数、耗时、内存、路由、视图、事件等,对于快速定位 N+1 查询或慢 SQL 极其有效。
- Laravel Telescope:Laravel 官方出品的调试助手,记录请求、异常、日志、查询、模型、邮件、通知、缓存等,后台查看,适合深度排查。
- 适用场景:开发过程中实时查看,快速定位明显的性能瓶颈(如大量重复查询)。
生产环境、线上压测、需火焰图
工具:Xdebug Profiler + KCacheGrind / Webgrind 或 Blackfire.io
- Xdebug Profiler:生成缓存grind文件,然后用工具可视化,它能生成最详细的函数调用关系图和耗时百分比。
- 优点:免费、最底层、信息最全。
- 缺点:会拖慢 PHP 进程,绝对不能在生产环境默认开启;生成文件较大,分析需额外工具。
- Blackfire.io:专业的 PHP 性能分析 SaaS 服务,由 SensioLabs(Symfony 公司)开发。
- 优点:对线上代码影响极小(通过扩展注入探针)、能生成火焰图、自动标记慢函数、对比不同版本的性能差异。如果公司预算允许,这是 Laravel 性能分析的最优解。
- 缺点:付费(有免费额度)。
专注慢查询与数据库
工具:Laravel 自带 Query Log + MySQL Slow Query Log
- Laravel 自带:
\DB::listen(function($query) { // 记录 $query->sql, $query->bindings, $query->time }); - MySQL Slow Query Log:记录执行时间超过
long_query_time的 SQL,这是最基础、最有效的数据库性能分析方式。 - 适用:排查绝大部分慢页面问题(90%的慢页面都是数据库查询造成的)。
如果你确实想用类似 XHProf 的工具(Tideways 方案)
这是给倾向于底层 C 扩展、低开销 profiling 的开发者:
- 安装 Tideways XHProf 扩展
- PECL:
pecl install tideways_xhprof - 或编译安装(推荐使用
phpts/pecl镜像)。
- PECL:
- 安装 Laravel 包
- barryvdh/laravel-debugbar(内置 XHProf 数据收集支持)。
- 或 [spatie/laravel-profiler]()(专门集成了 Tideways)。
- 配置
- 在
.env中启用 profiling:DEBUGBAR_ENABLED=true或安装包的配置项。 - 设置存储 profiling 结果的文件(默认在
storage/framework/profiler或类似位置)。
- 在
- 查看结果
- 通常结果会以
*.xhprof文件存储。 - 可以使用 Graphviz 生成调用图(复杂),或使用 XHProf UI (php-xhprof-extension) 的 Web 界面浏览。
- 更简单的方式:直接通过 Laravel Debugbar 的 “Timeline” 或 “Queries” 标签查看,它已经帮你收集了大部分数据。
- 通常结果会以
哪个方案最好?
| 需求场景 | 推荐工具 | 优先级 |
|---|---|---|
| 快速定位慢查询 | DB::listen() + MySQL Slow Log |
第一优先 |
| 开发时实时调试 | Laravel Debugbar | 每天必用 |
| 后台记录与分析 | Laravel Telescope | 开发/测试环境 |
| 线上压测、火焰图 | Blackfire.io (付费但效果最好) | 专业首选 |
| 免费、详尽函数级分析 | Xdebug Profiler + KCacheGrind | 本地/CI 环境 |
| 类 XHProf 低开销方案 | Tideways XHProf + Debugbar 插件 | 可选项,对新手不太友好 |
最终建议:
- 80% 的性能问题:用 Laravel Debugbar 找到慢 SQL,用
EXPLAIN分析加索引,或用缓存解决。 - 20% 的复杂问题(如代码逻辑耗时、大量循环、对象创建):才需要用到 Xdebug Profiler 或 Blackfire 生成火焰图。
不要在新项目里直接装原版 XHProf,浪费生命。 直接上 Laravel Debugbar + Blackfire.io(如果预算允许),或者 Telescope + Xdebug Profiler(免费方案)。