composer 2.1+ 原生支持并发下载,本质是基于 curl multi 的同步非阻塞 i/o,并非异步或多线程;确认 http-max-concurrent-downloads 是否生效需执行 composer install -vvv 查看是否多行同时下载,该配置是当前唯一有效并发参数,设为 8–10 最稳妥,须配合国内镜像、clear-cache 及卸载 prestissimo 才能真正提速。

Composer 2.1+ 原生支持并发下载,但不是“异步”(async/await 意义上的),也不是多线程;它用的是 PHP 的 cURL multi 实现的伪并行 I/O,本质是同步非阻塞。所谓“异步下载”在 Composer 里不存在,强行套用这个概念容易误判行为。
怎么确认 http-max-concurrent-downloads 是否生效
这是当前唯一真正起作用的并发控制配置(parallel-downloads 已在 Composer 2.2+ 中弃用)。设了不等于跑起来了,得看日志:
- 执行
composer install -vvv,若同时出现多行Downloading https://mirrors.aliyun.com/...,说明并发已激活 - 若进度始终单行打印、卡在某个包不动,大概率是镜像响应慢或被限流,不是配置没生效
- 运行
composer config -g http-max-concurrent-downloads查当前值,默认通常是 6,不是 0 或 3 - 设为 8~10 是多数机器的稳妥上限;设成 20 容易触发
file_put_contents(/tmp/): failed to open stream(临时文件竞争)
别再装 hirak/prestissimo,它现在有害
这个插件在 Composer 2.x 中不仅无效,还会干扰调度逻辑、静默降级为串行,甚至破坏 composer.lock 结构。如果你还看到 composer diagnose 提示它存在,必须立刻卸载:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
composer global remove hirak/prestissimo- 检查全局配置是否残留:
composer config -g --list | grep prestissimo - 没有官方推荐的“并发插件”——Composer 2.2+ 后所有有效并发能力都内置了,第三方插件基本是幻觉或兼容性陷阱
真正提速的组合动作,不是调一个参数
单独改并发数几乎没用,必须和以下三者咬合:
-
--prefer-dist:强制走 ZIP 包,跳过git clone和 submodule;项目composer.json里若有"prefer-source": true,它会直接覆盖全局设置,得手动删掉 - 国内镜像源:阿里云地址是
https://mirrors.aliyun.com/composer/,设完必须composer clear-cache,否则旧元数据还在走海外链路 - 关钩子与冗余操作:CI 中推荐命令是
composer install --prefer-dist --no-dev --no-scripts --no-autoloader --optimize-autoloader;其中--no-scripts能避免 post-install-cmd 触发 npm 或 redis 清库等意外串行动作
最常被忽略的点:并发只加速“下载阶段”,而 composer update 的依赖解析仍是串行的,Resolving dependencies 卡住时调并发毫无意义。另外,vendor 目录写入慢(尤其 macOS APFS 或 Windows 开了实时杀毒)会导致并发下载完却卡在解压后写文件,这时要关 fsync 或暂停防病毒软件扫描。这些环节彼此不耦合,得分开诊断。










