composer默认慢主因是串行处理、tls握手和dns解析耗时高,非带宽问题;启用并发(≥2.2)、正确镜像源(末尾带/)、--no-interaction与--remove-vcs才能实现“本地复制”体验。

直接用 composer create-project + 正确镜像源,就能获得接近本地复制的体验;不是靠“加速下载”,而是避免卡在元数据请求和 TLS 握手环节。
为什么默认速度慢得像在解压 ZIP 文件
Composer 默认串行处理每个包:先请求 packages.json,再请求 dist ZIP,再校验 hash,全部走同一个 HTTP 连接。TLS 握手、DNS 解析、单线程排队占了耗时 70% 以上,跟带宽关系不大。
- 现象:
composer create-project laravel/laravel myapp卡在Downloading laravel/framework超过 1 分钟 - 本质不是网络差,是没启用并发 + 镜像源路径拼错(比如少个
/)导致反复 404 - Composer 2.2+ 才支持
--concurrency=6,旧版本再换镜像也没用
国内镜像必须满足的三个硬条件
阿里云、腾讯云、华为云等镜像源,只有同时满足以下三点才能真正提速:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- URL 末尾带
/,例如https://mirrors.aliyun.com/composer/(少这个斜杠会拼成.../composerpackages.json→ 404) - 配置方式为全局生效:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 禁用所有插件:
composer create-project laravel/laravel myapp --no-plugins --no-interaction,否则phpstan-extension-installer类插件会在 install 阶段阻塞
执行前必须确认的三件事
否则即使镜像正确,create-project 也会静默变慢或失败:
- 目标目录必须为空——含
.git、README.md或隐藏文件都会报Project directory is not empty - 包名要精确匹配 Packagist,例如 ThinkPHP6 是
topthink/think,不是thinkphp/think - 版本号加引号:
"6.0.*"或"^11.0",不加引号时 shell 可能展开^导致解析失败
遇到卡住,立刻验证的两步操作
别重跑命令,先快速定位瓶颈:
- 用官方源测基线:
composer config -g repo.packagist composer https://packagist.org,再跑一次composer create-project laravel/laravel myapp --concurrency=6 --no-interaction -vvv,看是否还卡在某个包的GET请求上 - 清缓存再试:
rm -rf ~/.composer/cache/(Linux/macOS)或%APPDATA%\Composer\Cache(Windows),zlib 解压错误常源于缓存损坏
真正影响“本地复制感”的,从来不是下载速度,而是初始化阶段能否跳过交互、跳过 Git 克隆、跳过钩子阻塞——--no-interaction 和 --remove-vcs 比镜像本身更重要。很多团队提速失败,是因为只改了镜像,却忘了删模板自带的 .git 目录,结果每次 git status 都要遍历几百个文件。










