Composer 2.1+ 已原生支持并行下载,无需 prestissimo;应升级至 2.1+、切换国内镜像源(如阿里云)、合理设置 http-max-concurrent-downloads 为 8–10,并在 CI 中使用 --no-autoloader 和 --no-scripts 加速。

Composer 并行下载默认就开了,别再装 prestissimo
Composer 2.1+ 版本已原生支持并行下载,composer install 或 composer update 时自动并发拉取多个包,无需额外插件。老教程里推荐的 hirak/prestissimo 在 Composer 2.x 中不仅无效,还可能引发插件冲突、签名校验失败或 file_put_contents(/tmp/): failed to open stream 这类临时文件竞争错误。
- 确认是否真用上了新版:
composer --version,低于 2.1 就先composer self-update - 看日志有没有动态进度条,比如
Downloading (7/42)同时跳变多个数字——这就是并行在跑 - 装了
prestissimo却没提速?大概率是它被 Composer 2.x 忽略或静默禁用,直接composer global remove hirak/prestissimo更干净
必须换国内镜像源,否则并行也白搭
并行只是“同时发请求”,但若目标服务器在国外(如 https://packagist.org),DNS 解析慢、TLS 握手卡顿、CDN 路由绕行,会让并发请求集体堵在连接阶段,实际效果还不如单线程。
- 全局配置阿里云镜像(最稳):
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 腾讯云镜像适合南方用户:
composer config -g repo.packagist composer https://mirrors.cloud.tencent.com/composer/ - 换源后务必
composer clear-cache,否则旧缓存里的元数据仍会尝试回源 - 验证是否生效:
composer config -g repo.packagist输出应为对应 URL,不是null或空值
调高并发数要谨慎,10 不是越多越好
Composer 默认并发数在 2.2+ 是 6,部分版本甚至默认为 3。盲目设成 20 或 50 反而容易触发本地 I/O 瓶颈、临时目录争抢、或镜像站限流,导致大量重试和失败。
- 合理上限建议设为 8–10:
composer config --global http-max-concurrent-downloads 10 - 如果出现
failed to open stream或Unable to create temporary file,立刻降到 6 -
parallel-downloads这个配置项在新版中已被弃用,只认http-max-concurrent-downloads,设了也不生效 - 注意:该设置仅对
install有效;update因需实时解析依赖图,仍存在部分串行逻辑,别指望它也快 3 倍
CI/部署阶段跳过非必要步骤,省下 30% 时间
开发时需要 autoload 和脚本执行,但 CI 构建或生产部署时,这些全是冗余开销。尤其当项目含上百个包时,生成 vendor/autoload.php 和跑 post-install-cmd 可能比下载本身还慢。
- CI 构建推荐加这两个参数:
composer install --no-autoloader --no-scripts -
--no-autoloader跳过自动生成加载器,后续用composer dump-autoload --optimize单独处理更可控 -
--no-scripts阻止执行所有钩子,避免意外触发前端构建、缓存清理等重型操作 - 别加
--verbose或-v到日常构建命令里,彩色输出和详细日志会拖慢终端 IO
真正卡住时,先 composer install -v 看停在哪一步——是卡在 downloading,还是卡在 extracting、generating autoload、或者某个 post-install-cmd 脚本里。把“下载慢”当成万能原因,反而会错过真实瓶颈。










