Composer 2.2+ 需手动启用并行下载:执行 composer config -g parallel-downloads 10 全局设并发数为10,并配合国内镜像源、--prefer-dist、--no-autoloader 和 --no-scripts 才能显著提速。

怎么开启 Composer 并行下载?
Composer 2.2+ 原生支持并行下载,但默认是关的,且并发数只有 3,基本等于没开。不手动调高,composer install 就还是串行等包、一个一个下,卡在 downloading 是常态。
- 全局启用并设为 10(多数机器的合理上限):
composer config -g parallel-downloads 10 - 只对
install有效;update因依赖图计算逻辑仍部分串行,别指望它也快 3 倍 - 如果遇到
file_put_contents(/tmp/): failed to open stream错误,说明并发太高触发临时文件竞争,降到6或8再试
为什么光开 parallel-downloads 还是慢?
并行下载不是“魔法开关”,它只解决“怎么下得快”,但前提是“能连上、有得下”。国内直连 packagist.org 经常 DNS 解析慢、TLS 握手卡顿、甚至直接超时——这时候并发再高也没用,线程全堵在握手阶段。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 必须搭配国内镜像源:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - PHP 的 cURL 默认复用 DNS 缓存,换镜像后可能仍走海外节点解析;建议 CI 环境加
export COMPOSER_NO_INTERACTION=1避免交互干扰,Docker 构建务必提前在Dockerfile里执行换源命令 - GitHub 包多的项目,没
github-oauthtoken 会被限流(每小时仅 60 次),加了才能升到 5000+:composer config -g github-oauth.github.com YOUR_TOKEN
--prefer-dist 和 parallel-downloads 是什么关系?
--prefer-dist 不是并行开关,但它让并行更有效:它告诉 Composer 优先下载已打包好的压缩包(dist),而不是拉 Git 仓库(source)。dist 包体积小、校验快、解压快,天然适合并发拉取。
- CI 脚本中推荐组合使用:
composer install --prefer-dist --no-dev --optimize-autoloader - 可设为全局默认:
composer config -g prefer-dist true,但开发机慎用——会干扰你调试依赖源码(比如要改vendor/xxx里的代码) - 注意:如果项目用了
path类型仓库或dev-xxx分支,--prefer-dist对这些无效,Composer 会自动 fallback 到 source
哪些场景该禁用 autoload 或脚本?
开发时需要自动生成 vendor/autoload.php 和跑 post-install-cmd,但 CI 构建或生产部署时,它们纯属冗余——尤其当项目含上百个包时,生成 autoload 和执行脚本能吃掉 30%+ 时间。
- CI 中务必加:
composer install --no-autoloader --no-scripts -
--no-autoloader跳过生成 autoload 文件,后续用composer dump-autoload --optimize单独补 -
--no-scripts阻止执行前端构建、缓存清理等重型钩子;否则可能意外触发 npm install 或 redis flushdb - 注意:这样装出来的
vendor不能直接运行 PHP,必须补一次composer dump-autoload --optimize
parallel-downloads 却忘了换源,结果只是更快地卡在 TLS 握手上。

















