Composer install 默认单进程,不自动利用多核CPU;提速依赖Composer 2.1+版本、正确配置http-max-concurrent-downloads(如设为8)、切换阿里云镜像并清缓存,且需通过composer install -vvv观察多行Downloading或进度跳变来验证并发是否生效。

composer install 默认不利用多核 CPU,它只是单进程 PHP 脚本,所谓“多核加速”实际是通过并发 HTTP 请求、并行解压与写入实现的——但这些能力全依赖版本、配置和环境协同,不是装个插件就自动生效。
确认 Composer 版本是否支持原生并行
低于 2.1 的版本(包括所有 1.x)根本不识别任何并发参数,parallel-downloads、http-max-concurrent-downloads、--concurrency 全部无效。必须先执行:
composer --version
输出需为 Composer version 2.2.22 或更高(2026 年推荐用 2.9.6)。若显示 1.10.22 或 2.0.14,立刻升级:
composer self-update --prefer-dist
升级后别急着配参数,先跑一次 composer install -vvv,观察日志里是否出现多行 Downloading https://mirrors.aliyun.com/ 同时滚动,或进度从 (5/42) 跳到 (13/42) ——这是唯一可信的并发启用信号。
只认 http-max-concurrent-downloads,其他都过时了
parallel、parallel-downloads 这两个配置项在 2.2+ 中已被官方弃用:设了不报错,但完全不生效。当前唯一有效、文档明确支持的并发控制项是:
-
http-max-concurrent-downloads:直接控制 cURL multi 句柄池大小,决定最多发几个 HTTP 请求 - 全局设为
8是多数开发机的稳妥上限:composer config -g http-max-concurrent-downloads 8 - 临时覆盖(如 CI)可用环境变量:
COMPOSER_MAX_PARALLEL_HTTP_REQUESTS=6 composer install - 值设太高反而坏事:
12+容易触发阿里云镜像的429 Too Many Requests;20会大概率导致file_put_contents(/tmp/): failed to open stream(临时文件竞争)
镜像没换对,并行就是假动作
并发只是“同时发请求”,如果每个请求都卡在 DNS 解析、TLS 握手或首字节延迟上,开 10 个等于 10 个排队窗口。必须配国内镜像源并清缓存:
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- 阿里云镜像最稳:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 换完立刻清缓存:
composer clear-cache,否则旧元数据仍 fallback 到packagist.org - 验证是否生效:
composer config -g repo.packagist输出必须是完整 URL,不能是null或空值 - 项目级
composer.json若写了repositories,会覆盖全局镜像,得手动删或改
注意:http-max-concurrent-downloads 对 composer update 几乎无效——因为依赖图解析、packages.json 拉取仍是串行,无法绕过。
vendor 写入慢?不是并发问题,是文件系统在拖后腿
下载快了,但解压后往 vendor/ 写几百个小文件时卡住,常见于:
- macOS APFS 或 Windows NTFS + 实时杀毒软件(如 Windows Defender)拦截每个
file_put_contents - PHP 的
fsync()调用被强制触发,尤其在 Docker 或 CI 环境中 - 磁盘 I/O 成瓶颈,而非网络或 CPU
实操建议:
- CI 构建中加
--no-autoloader --no-scripts --optimize-autoloader,跳过 autoload 生成和钩子脚本 - Dockerfile 中提前关掉防病毒实时扫描(若可控)
- 避免在
composer install后立即执行composer dump-autoload,可拆成独立步骤异步处理
真正容易被忽略的是:并发数调得再高,只要镜像源没切对、缓存没清干净、临时目录权限不对,http-max-concurrent-downloads 就只是个摆设。

















