先用curl -w分层定位耗时,确认问题是否在dns、tcp、tls、服务端处理或fpm排队等环节;再查fpm状态与slowlog,结合phpstan和phpcs扫描兼容性问题,避免异常降级导致rt升高。

先用 curl -w 看清耗时分层
别急着开 Xdebug 或改代码,第一步必须确认时间到底花在哪一层。PHP 8.0 本身没加新性能开销,RT 升高大概率是某层被卡住,而你可能根本没进到 PHP 执行阶段。
执行这条命令就能拆开关键节点:
curl -s -o /dev/null -w 'dns=%{time_namelookup} connect=%{time_connect} tls=%{time_appconnect} ttfb=%{time_starttransfer} total=%{time_total}\n' http://your-api
重点关注三个差值:
-
time_starttransfer - time_appconnect≈ 服务端处理时间(含 FPM 排队) -
time_connect - time_namelookup高说明 TCP 建连慢(如连接池打满、SYN 重传) -
time_starttransfer接近time_total,但ttfb很大 → PHP-FPM 排队或卡在初始化(如 autoload、扩展加载)
查 PHP-FPM status 和 slowlog 定位排队与慢执行
如果上一步发现 time_starttransfer 明显偏高,说明请求在 PHP 层被阻塞。这时要立刻看两个东西:
- 打开
pm.status_path(比如/status),访问 Nginx 转发的该 endpoint,检查listen queue是否持续 > 0 —— 是则 FPM 进程池太小,max children已打满 - 开启
slowlog(配置项slowlog = /var/log/php-fpm-slow.log,request_slowlog_timeout = 1s),它会记录真实进入 PHP 后卡住的调用栈,比任何 profiler 都准 - 注意:PHP 8.0 默认禁用
opcache.enable_cli,但如果你在 CLI 模式下跑健康检查脚本,没开 opcache 会导致每次 require 都重新编译,也会拖慢 ttfb
用 phpstan + PHPCompatibility 扫描隐性兼容问题
很多 RT 升高不是因为“慢”,而是因为错误降级成异常后反复重试、或 fallback 逻辑兜底路径更重。例如:
-
array_key_exists('id', $_GET)在 $_GET 为 null 时,PHP 7.2 返回 false,PHP 8.0 抛TypeError→ 框架捕获后走 error handler,再 log、再返回 500,耗时翻倍 -
json_decode($str, 1)在 PHP 8.0 报错,触发 catch 块里的字符串解析 fallback,CPU 占用飙升 - 用
create_function()的老代码直接 fatal,导致整个中间件链路中断,请求被 Nginx 转发重试
运行这两条命令提前揪出这类问题:
phpstan analyse --level max src/
phpcs --standard=PHPCompatibility --runtime-set testVersion 8.0 ./src
重点盯 ERROR 级别结果,它们基本都会导致运行时中断或异常分支膨胀。
警惕 PDO 默认行为变更和扩展版本不匹配
PHP 8.0 对 PDO 和扩展 ABI 做了调整,看似没报错,但实际行为变慢:
- PDO 默认启用
PDO::ATTR_EMULATE_PREPARES = false,如果 MySQL 服务端不支持原生预处理(如老版 MariaDB 或某些云数据库 proxy),每次 query 都多一次 round-trip,RT 直接 +50ms+ - Redis 扩展若低于 5.3.0,PHP 8.0 下会静默退化为 socket 模式(而非 hiredis),吞吐下降 30%+;用
php -r "echo Redis::getVersion();"确认版本 -
mbstring.func_overload在 PHP 8.0 被彻底移除,如果旧代码依赖它做自动编码转换,现在所有strlen()、substr()都走默认字节逻辑,中文字段截断后引发后续 JSON 编码失败、重试、日志刷屏
这些不会报错,但会让单请求路径变长、错误率上升、重试增多——最终体现为 P95 RT 抬头,且波动剧烈。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











