composer 2.1+ 默认启用并发下载,无需开启;若未生效,多因网络、镜像或配置问题,可通过 -v 日志验证,并建议使用国内镜像、清理缓存、合理设置 http-max-concurrent-downloads(6–10)。

Composer 并发下载根本不用“开启”
Composer 2.1+ 版本起,并发下载(parallel downloading)是默认启用的底层行为,没有开关、没有配置项叫 enable-parallel 或 thread-count。你不需要运行任何“开启命令”,只要版本够新,它就在工作。
常见错误现象:执行 composer install 时包还是一行一行下载、进度条卡在某个包不动、耗时和旧版差不多——这通常不是因为“没开启并发”,而是网络、镜像或配置拖了后腿。
- 检查版本:
composer --version,低于2.1就升级:composer self-update - 确认没被意外禁用:全局配置里不能有
disable-tls: true,环境变量不能设COMPOSER_DISABLE_PARALLEL=1或COMPOSER_DISABLE_NETWORK=1 - PHP 必须启用
curl扩展:php -m | grep curl,否则并发请求会退化为串行甚至失败
怎么验证并发真正在跑
别看速度,要看日志里有没有“同时发起多个请求”的痕迹。开详细模式最直接:
- 运行:
composer install -v(或-vv/-vvv) - 观察输出中是否出现类似这样的交错行:
Downloading https://mirrors.aliyun.com/composer/... (1.2 MB)Downloading https://mirrors.aliyun.com/composer/... (0.8 MB)Downloading https://mirrors.aliyun.com/composer/... (3.1 MB) - 如果只看到一条
Downloading...持续很久,再换下一行,说明并发没生效——大概率是镜像源响应慢、DNS 不稳,或被限流
调并发数不是越多越好,6–10 是安全区间
Composer 默认并发数在 3–15 之间浮动,具体由网络状况自动调节。你可以手动设上限,但值太高反而容易翻车:
- 设太高(如
20):触发 GitHub 或镜像源的请求频率限制,返回429 Too Many Requests;也可能吃光内存,尤其在 CI 环境 - 设太低(如
1):等于自废武功,退化成 Composer 1 的体验 - 推荐做法:
composer config -g http-max-concurrent-downloads 8(全局生效)或临时用:COMPOSER_MAX_PARALLEL_HTTP_REQUESTS=6 composer update - 注意:
http-max-concurrent-downloads是 Composer 2.2+ 才支持的配置项,老小版本不识别
比调并发更关键的三件事
很多人花时间折腾并发数,却忽略真正卡脖子的环节——网络延迟、源不稳定、缓存失效。这三件事解决后,并发才能真正跑起来:
- 必须切国内镜像:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/(阿里云)或https://mirrors.cloud.tencent.com/composer/(腾讯云) - 清理坏缓存:
composer clear-cache,尤其当你改过镜像或遇到file could not be downloaded类错误时 - 避免干扰行为:安装时加
--no-scripts跳过 post-install-cmd,加--prefer-dist(默认已启用)确保下 zip 包而非 git clone
真正容易被忽略的是:并行只对 dist 包下载有效,对 path 类型仓库、git 源且启用了 "prefer-source": true 的项目,Composer 会自动降级为串行处理——这不是 bug,是设计使然。










