composer 2.2+ 唯一有效的高并发配置是http-max-concurrent-downloads,parallel-downloads等参数已废弃;需先确认版本≥2.2、启用curl,再通过composer install -vvv观察多行downloading或进度跳跃验证生效。

Composer 2.2+ 唯一有效的高并发配置是 http-max-concurrent-downloads,其他参数如 parallel-downloads、--concurrency 或环境变量 COMPOSER_PARALLEL 已废弃,设了也不起作用。
确认 Composer 版本是否支持并发控制
低于 2.2 的版本完全忽略 http-max-concurrent-downloads,强行配置等于白写:
- 运行
composer --version,输出必须是Composer version 2.2.0或更高 - 若为
2.1.x或更早,先执行composer self-update - 验证 PHP 是否启用了 cURL:
php -m | grep curl;没启用会静默退化为串行
设置全局并发数(推荐 6~8)
这个值控制所有下载阶段的 HTTP 连接池大小,影响 install、update、require:
- 全局生效:
composer config -g http-max-concurrent-downloads 8 - 仅当前项目生效:
composer config http-max-concurrent-downloads 6 - 查看当前值:
composer config -g http-max-concurrent-downloads,输出应为纯数字 - 拼写必须严格为
http-max-concurrent-downloads:少一个单词、多一个连字符、漏掉http-都无效
用环境变量临时覆盖(CI/CD 场景首选)
环境变量优先级最高,适合弱网或资源受限的流水线:
- 正确变量名是
COMPOSER_MAX_PARALLEL_HTTP_REQUESTS(不是COMPOSER_PARALLEL) - 示例:
COMPOSER_MAX_PARALLEL_HTTP_REQUESTS=4 composer install - 某些老旧 CI 环境可能禁用环境变量传递,此时需显式写入
composer.json的config段(不推荐长期使用)
验证并发是否真生效
别只看命令加了参数,关键盯 composer install -vvv 的实时日志:
- 同一秒内出现多行
Downloading https://mirrors.aliyun.com/→ 并发已激活 - 进度条跳跃式推进,例如从
(5/42)→(14/42)→(22/42)→ 并发生效 - 始终单行输出、CPU 占用低、网络连接数极少 → 很可能是镜像未生效,或 DNS 缓存未绕过
- 设太高(如 20)容易触发镜像限流(
429 Too Many Requests)或临时文件竞争(file_put_contents(/tmp/): failed to open stream)
真正卡住的地方往往不是并发数本身,而是镜像源配置错误、项目级 repositories 覆盖全局设置、或 PHP cURL 扩展未启用——这些都会让并发配置彻底失效,且不报错。











