composer安装慢90%非网络问题,而是镜像未生效、未清缓存、未启用parallel-downloads或composer.lock缺失;需验证镜像url、清缓存、设parallel-downloads=10、提交lock文件并用--prefer-dist。

Composer 安装慢,90% 以上不是网络问题,而是配置没对、命令用错、或镜像没生效。开 --prefer-dist、换国内镜像、启用并行下载这三步做完,多数项目安装耗时能从 3–5 分钟压到 30 秒内;但若跳过验证或忽略私有源兼容性,反而会报错中断。
为什么 composer install 卡在 downloading
多半是直连 packagist.org:DNS 解析慢、TLS 握手超时、单连接限速,每个包都串行等响应。不是你带宽小,是默认链路没优化。
- 运行
composer config -g repo.packagist确认是否已切到阿里云镜像(输出应含"url": "https://mirrors.aliyun.com/composer/") - 执行
composer clear-cache清掉旧缓存——它可能还在拉取海外元数据 - 临时绕过所有自定义源测试:
composer install --no-plugins --repository=https://packagist.org,如果变快,说明本地repositories配置有问题 -
--prefer-dist必须配合镜像才有效;国内镜像几乎不缓存source,没切成功就会 fallback 到慢速 Git clone
为什么 composer install 卡在 Resolving dependencies
这和网络无关,常见于:composer.lock 缺失或未提交、minimum-stability 设为 dev、项目中存在已下线的私有仓库(Composer 会逐个超时重试)、或 CLI 模式下 OPcache 被禁用。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 确保
composer.lock已提交到 Git——跳过解析,直接安装已知兼容版本 - 设
"minimum-stability": "stable",避免自动拉取dev-或alpha分支触发额外校验 - 检查 PHP CLI 是否启用了 OPcache:
php -d opcache.enable_cli=1 composer install;某些 Docker 镜像或自定义ini会关掉它 - 若用私有源,确认其
packages.json支持providers-url和provider-includes,否则 Composer 会下载全量元数据
parallel-downloads 和 --concurrency 怎么设才真提速
parallel-downloads 是 Composer 2.2+ 内置的并发机制,默认值是 3,基本等于没开;--concurrency 是更底层的控制,但只对 install 有效,且依赖镜像源支持 HTTP/2 多路复用。
- 先确认版本:
composer --version,低于 2.2 不支持原生并发 - 全局启用:
composer config -g parallel-downloads 10(10 是多数机器合理上限) - CI 中推荐组合:
composer install --concurrency=6 --no-interaction --no-progress(值设为 CPU 核心数 × 1.5,但不超过 12) - 加了
--concurrency=8却没提速?很可能是镜像源(如阿里云)本身限流或不支持 HTTP/2,导致并发请求被排队堵死 - 别再装
hirak/prestissimo——它在 Composer 2.x 中已失效,甚至可能引发静默降级
Monorepo 场景下怎么避免重复解析几十个包
根本原因是 Composer 默认重复解析所有 composer.json 并执行冗余 symlink 扫描,尤其 path 类型仓库会极大增加 I/O 开销。
- 根目录
composer.json中,把所有packages/*移出require,改用repositories+path声明为本地源 - 日常开发进子包目录执行:
cd packages/utils && composer install --no-install --no-autoloader,只生成 autoload 文件,不装包 - 禁用无用插件:
"fxp-asset": false(若没用 bower-asset 或 npm-asset),否则会额外发起大量 HTTP 请求 - 临时删掉
repositories中的path条目再跑一次composer install,对比耗时可快速确认是否 Monorepo 引起
最易被忽略的是:镜像是否真正生效、composer.lock 是否被提交、以及 parallel-downloads 在低版本 Composer 中完全无效。这些点不验证,其他所有优化都只是假提速。










