composer网络性能差主因是默认直连境外源、并发被静默降级、缓存失效或配置冲突;需同时配置镜像源、http-max-concurrent-downloads并清缓存,再用-vvv日志验证多条downloading行确认并发生效。

Composer网络性能差,90%不是它本身慢,而是默认直连境外源、并发被静默降级、缓存失效或配置冲突。调对几个关键配置项,composer install 从几分钟降到十几秒很常见。
怎么确认并行下载是否真在跑
别只看“正在下载”就以为并发开了——Composer 2.1+ 默认启用并行,但极易退化为串行。必须用 -vvv 日志验证:
- 执行
composer install -vvv,观察日志里是否**同时出现多条Downloading https://...行**;如果只有一条在滚动,说明并发被阻塞 - 检查 PHP 是否启用了
curl扩展:php -m | grep curl,没启用会强制 fallback 到串行 file_get_contents - 运行
composer --version,低于2.1必须先composer self-update
必须设的三个网络相关配置
只改一个镜像源远远不够。这三个配置要一起配,缺一不可:
-
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/:切国内镜像(别用已停更的 phpcomposer.com) -
composer config -g http-max-concurrent-downloads 8:全局设并发数,8是多数机器的稳妥上限;超过10容易触发阿里云镜像的429 Too Many Requests -
composer clear-cache:换镜像后必须清缓存,否则旧元数据仍走境外源,http-max-concurrent-downloads彻底无效
代理配置只在特定场景有效
镜像源和代理不能共存,选其一。代理仅适用于以下情况:
- 公司内网无法直连公网,且没有私有镜像站
- 必须走
https://packagist.org原站(比如依赖了未同步到镜像的私有包)
配置方式严格限定:
- 必须显式设置两个键:
composer config -g repo.packagist.org.proxy http://127.0.0.1:7890和composer config -g repo.packagist.org.ssl-proxy http://127.0.0.1:7890 - 协议头
http://不可省略,漏掉会报Invalid URI - 不支持系统环境变量(
http_proxy等),Composer 完全不读
哪些操作根本不受网络配置影响
别浪费时间给这些命令加并发或代理参数——它们压根不走网络:
-
composer dump-autoload:纯本地文件生成,--optimize或--classmap-authoritative再快也跟网络无关 -
composer diagnose:只检查本地配置和权限,不发任何 HTTP 请求 -
composer install --no-plugins:禁用插件后,所有第三方加速器(如prestissimo)直接失效,网络配置也进不去
最常被忽略的是:元数据拉取(https://repo.packagist.org/packages.json)始终是串行的,这是 Composer 的设计限制,不是配置问题。所以 composer update 开头那几十秒卡顿,调再高的并发也没用。











