本文目录导读:

对于 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(免费方案)。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播