PHP8.3请求阻塞问题:同浏览器下后续请求需等前序完成
Chrome/Edge浏览器同URL并发请求阻塞问题排查
问题现象
- 部署环境:Windows平台Docker容器(基于Ubuntu 24.04 amd64镜像),Nginx+PHP-FPM(PHP8.3)
- 测试脚本
test.php代码:
<?php //exit(0); sleep(60);
- 测试流程及异常表现:
- 在浏览器访问
test.php,触发长耗时PHP执行 - 第一个请求未完成时,取消脚本中
//exit(0);的注释 - 打开新浏览器标签页再次访问
test.php,发现新请求需等待第一个请求完成才开始处理
- 在浏览器访问
- 附加现象:浏览器标签显示两个
test.php处于加载状态,但PHP-FPM状态页仅显示1个运行中的test.php进程
排查过程
- 排除会话阻塞:确认
session.auto_start配置为0,代码中未使用$_SESSION,无文件会话锁问题 - 跨环境验证:更换为Apache+PHP8.3、Laragon等环境测试,问题依然存在
- 跨客户端验证:使用非Chrome/Edge的浏览器,或通过cURL发送请求,并发请求无阻塞,服务端可同时处理多个请求
结论
此阻塞问题并非服务端(Nginx/PHP-FPM)或代码逻辑导致,本质是Chrome和Edge浏览器的同源同URL请求串行化机制——同一浏览器针对同一URL的并发请求会被自动串行处理,必须等待前一个请求完成后才会发起下一个请求。
内容的提问来源于stack exchange,提问作者NathanLi
相关产品推荐
相关产品推荐

