Composer 无多线程功能,所谓并行实为异步I/O模拟并发;v2.1+默认启用,仅可调http-max-concurrent-downloads(默认6);换国内镜像源比调并发更有效。

Composer 本身没有多线程,别信 --threads 或 -j
Composer 命令行根本不识别 --threads、-j、--parallel 这类参数——加了直接报错:Unrecognized option: --threads。这不是你装错了,是它压根没这功能。PHP 底层用的是 file_get_contents 或单连接 cURL,没有原生多线程能力。所谓“并行下载”,其实是靠异步 I/O + 多路 HTTP 请求模拟出来的并发效果,不是操作系统级的线程。
常见错误现象:看到别人说“加个 --threads 8 就飞起”,一试就报错;或者在 CI 脚本里硬塞参数,导致构建失败。
- Composer v2.1+ 已默认启用并行下载,无需手动开启
- 真正能调的只有并发请求数:
http-max-concurrent-downloads(默认 6) - 想改高点?可以:
composer config --global http-max-concurrent-downloads 10,但超过 15 容易触发镜像限流或 DNS 超时
换国内镜像源比调并发更管用
卡在 downloading 阶段,90% 不是带宽问题,而是连不上 packagist.org:DNS 解析慢、TLS 握手超时、中间 CDN 缓存未命中。阿里云镜像平均下载速度 1–5 MB/s,比直连快 3–8 倍,耗时下降 60% 以上。
实操建议:
- 全局换源(推荐):
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 验证是否生效:
composer config -g repo.packagist,输出应含"url": "https://mirrors.aliyun.com/composer/" - 企业内网若证书校验失败,可临时关 HTTPS 校验:
composer config -g secure-http false(仅限可信环境) - 别用已停服的
https://packagist.phpcomposer.com,会 404
prestissimo 插件还能用吗?慎装
hirak/prestissimo 是老派加速方案,靠 fork 子进程实现“伪并行”。但它在 Composer v2.5+ 中与内置异步客户端冲突,容易导致随机 hang 死、CPU 占满、或 composer diagnose 报插件异常。官方早在 2022 年就不再维护,且 v2.2 起 Composer 自带的异步 HTTP 客户端已覆盖其核心能力。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
使用场景:仅适用于仍卡在 v1.x 的遗留项目(比如 PHP 5.6 环境),新项目完全没必要。
- 如果误装了,卸载命令是:
composer global remove hirak/prestissimo - 装了又不想删?至少禁用 fxp 插件干扰:
composer config -g fxp-asset-proxy false - CI 环境中更建议直接跳过插件,用
--prefer-dist --no-interaction --no-scripts组合提效
--prefer-dist 不是开关,是策略选择
--prefer-dist 不开启“多线程”,也不改变并发数,它只是告诉 Composer:优先下载预打包的 .zip 或 .tar.gz(dist),而不是克隆 Git 仓库(source)。对大包(如 Laravel、Symfony)效果极明显——省去 git clone、checkout、submodule 初始化等开销。
容易踩的坑:
- 即使加了
--prefer-dist,仍走 source:可能因为composer.lock已锁定为 source 方式,删掉composer.lock和vendor/重试 - 某些私有包没提供 dist 发布,
composer show vendor/package查看输出中dist字段是否为空 - 全局生效更省事:
composer config -g preferred-install dist
真正拖慢 Composer 的,往往不是下载本身,而是某个包的 post-install-cmd 卡住、autoload 生成耗时、或某次 TLS 握手失败后反复重试。打开 composer install -v 看清停在哪一行,比盲目折腾“多线程”实在得多。

















