答案是composer慢主因非镜像失效而是配置错误、缓存未清或链路不全:键名必须为repo.packagist(非repos)、type值必填composer、url须含末尾/,三者缺一即静默回退官方源;需验证config输出及-vvv日志确认镜像路径,且重装前须删vendor与composer.lock以更新dist.url。

配了中文镜像却还是慢,大概率不是镜像不行,而是配置没真正生效、缓存没清干净,或者根本没走对链路——Composer 的“慢”分好几层,得一层层剥开看。
composer config -g repo.packagist 输出为空或仍是 packagist.org
这是最常见也最隐蔽的失败点。命令写错一个字符就静默失效,不报错、不提示、照样连官方源。
-
repo.packagist不能写成repos.packagist(多一个 s 就被完全忽略) - 必须显式带上
composer这个type值:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - URL 必须以
/结尾,缺它会导致请求路径拼成/composerpackages.json,直接 404 - 验证命令必须是
composer config -g repo.packagist,输出应为完整 URL 字符串或 JSON 对象,空、null或仍含packagist.org都说明没写进去
composer install -vvv 日志里仍出现 packagist.org 或 codeload.github.com
日志里看到 Downloading https://api.packagist.org/ 或 https://codeload.github.com/,说明不是网络卡,是请求根本没发到镜像上。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- 先跑
composer clear-cache(不是cache-clear,后者已废弃),否则 Composer 会优先读旧缓存里的元数据,反复尝试从旧地址校验 - 删掉
vendor/和composer.lock再重装:composer install --no-cache,否则composer.lock里记录的dist.url还是原始 GitHub 地址 - 项目级
composer.json中若已有"repositories"字段,会直接覆盖全局配置;用composer config repo.packagist(不带-g)确认当前生效的是哪一层 - 镜像只代理元数据(
packages.json),不托管 zip 包;codeload.github.com卡住,说明你没处理 dist 下载路径,得靠删 lock + 重装来刷新
换了镜像、清了缓存,Resolving dependencies 还卡几分钟
这个阶段根本不走网络,镜像再快也没用。卡在这里,问题出在本地 PHP 环境或依赖结构本身。
-
COMPOSER_MEMORY_LIMIT=-1临时提高内存限制:默认 128M 在解析复杂依赖图时经常爆掉 - Xdebug 启用中会让求解器慢 5–10 倍;用
php -d xdebug.mode=off $(which composer) install临时禁用 -
"php": ">=7.4"却在 PHP 8.2 上运行,会触发降级查找逻辑,暴力遍历数百个版本 -
composer.json里写了宽泛约束如"*"或"dev-main",求解器要查大量兼容性元数据,CPU 占满也卡
http-max-concurrent-downloads 设太高反而更慢
新版 Composer(2.2+)只认 http-max-concurrent-downloads,设错值或设太高,容易翻车。
-
parallel-downloads已弃用且不报错,设了等于白设 - 推荐值是
8~10;设成20容易触发本地 DNS 并发解析瓶颈、cURL 句柄上限或镜像反爬限流 - 必须同步加大超时:
composer config -g http.timeout 300和composer config -g process-timeout 3600 - 并发下载只对
install有效,对update几乎无加速作用
最容易被忽略的是:镜像只解决元数据拉取和包下载这两步,而 Resolving dependencies、Loading composer repositories(本地缓存读取)、Generating autoload files 全部发生在本地,跟镜像无关。真卡在这儿,别折腾 URL,先看内存、Xdebug、PHP 版本和 composer.json 约束写法。










