composer install 卡在“downloading…”本质是默认串行下载导致网络延迟叠加,国内用户需配置镜像并根据版本选择方案:1.x 用 hirak/prestissimo 全局插件,并发下载;2.x 原生支持并行,通过 config -g 调整 concurrent 值即可。

为什么 composer install 卡在 “Downloading…” 且慢得反常
本质是 Composer 默认串行下载,每个包等前一个下完才开始下一个,网络延迟叠加后感知极差。尤其在国内,不走镜像、没开并行,hirak/prestissimo 这类插件就是为解决这个卡点而生的——但它不是“魔法”,而是把下载逻辑从单线程搬到了多线程(PHP 本身不支持真并行,实际是并发 HTTP 请求)。
常见错误现象:composer install 长时间停在 “Downloading …” 没报错、CPU 占用低、网络请求极少;或者看到大量 Downloading https://packagist.org/… 日志但进度条几乎不动。
- 必须确认你用的是 Composer 1.x(
hirak/prestissimo不兼容 Composer 2+);Composer 2 已原生支持并行下载,插件反而冲突 - 国内用户务必先配置 packagist 镜像(如阿里云或腾讯云),否则插件再快也受限于源站响应
- 插件只加速下载阶段,不加速 autoloader 生成、脚本执行或 post-install-cmd
Composer 1.x 下怎么装 hirak/prestissimo 并生效
它是个全局插件,不是项目依赖,不能 composer require 到项目里。装错位置(比如装进项目 vendor)会导致完全不生效,且无任何提示。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 全局安装命令:
composer global require hirak/prestissimo - 确认安装路径是否在
$PATH中:运行composer global config bin-dir --absolute,然后检查该目录是否已加入 shell 的PATH - 装完后执行
composer global show,能看到hirak/prestissimo出现在列表里才算成功 - 如果仍不加速,试试删掉
vendor/和composer.lock,再跑一次composer install—— 插件只对新下载生效,已有缓存包不会重走并发逻辑
Composer 2.x 用户别碰 hirak/prestissimo,改用原生配置
Composer 2 内置了 parallel 下载机制,默认已启用,但并发数默认保守(通常 3–5 个连接)。很多人没意识到这点,还在折腾老插件,结果装不上、报错、甚至破坏 lock 文件结构。
- 查看当前并发数:
composer config -g repos.packagist.org.concurrent(Composer 2.2+ 支持) - 调高并发(例如设为 10):
composer config -g repos.packagist.org.concurrent 10 - 注意:过高可能触发镜像限流(尤其是阿里云镜像),5–8 是较稳妥的范围
- 若用的是旧版 Composer 2(
加速失效的三个典型场景和对应检查点
即使插件或配置都对,也可能因环境细节被绕过。这些点容易被忽略,但一查就定位问题。
- 用了
--no-plugins参数:这个开关会直接禁用所有插件,包括prestissimo,检查 CI 脚本或 alias 是否带了它 - 镜像源地址写死在
composer.json里(如"url": "https://packagist.phpcomposer.com"):这种写法会绕过全局镜像配置,导致插件无法接管请求 - 本地
composer.json里定义了repositories且含非 packagist 类型(如vcs或package):prestissimo 只加速 packagist 官方源,自定义源仍串行
复杂点在于:下载加速只是链路一环,真正拖慢整条流程的,往往是后续的解压、symlink、autoload 生成。如果你发现 “下载快了但 install 总耗时没变”,大概率卡在了这后面——那就不是 prestissimo 或并发配置能解决的事了。










