composer update卡在“resolving dependencies”是因本地sat求解器重算依赖图,宽松约束、废弃插件fxp/composer-asset-plugin、错误镜像配置及classmap-authoritative误用均会加剧耗时。

composer update卡在“Resolving dependencies”不是网络问题
这阶段根本没开始下载,是在本地跑 SAT 求解器重算整个依赖图。哪怕你只改了一个包的版本号,Composer 也会丢弃 composer.lock 里已验证的兼容关系,从头尝试所有组合。
常见放大耗时的写法:"php": ">=7.4"、"minimum-stability": "dev"、宽松约束如 "monolog/monolog": "^2.0 || ^3.0"——这些会让候选版本数暴增,求解时间呈指数增长。
- 精准更新:用
composer update yiisoft/yii2替代全量composer update - CI/CD 中禁用
update,坚持用composer install --no-interaction --no-scripts - 删掉
composer.json里不必要的minimum-stability或放宽的 PHP 约束
换镜像源却还是慢?检查 repos.packagist 配置是否配对生效
很多人执行了 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/,但依然卡住——因为 Composer 2+ 要求 repos.packagist(带 s)必须同时设置 type 和 url,缺一不可,否则静默 fallback 到官方源做校验。
正确命令是:
composer config -g repos.packagist.type composer<br>composer config -g repos.packagist.url https://mirrors.aliyun.com/composer/
验证方式:composer config -g repos.packagist 输出必须是完整 JSON 对象,含 "type": "composer" 和 "url" 字段。旧写法 repo.packagist(少一个 s)在 Composer 2+ 中已无效。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
fxp/composer-asset-plugin 是 Yii2 更新慢的隐藏推手
这个插件早已废弃,但它仍在很多老项目中残留。它会强行触发 Node.js 进程去拉 Bower 包,而国内访问 bower.io 基本超时,导致 composer update 卡在 “Installing dependencies” 阶段,反复失败、重试、耗尽 timeout。
- 彻底卸载:
composer global remove fxp/composer-asset-plugin - 切换到纯 Composer 方式:
composer config -g repositories.asset-packagist '{"type": "composer", "url": "https://asset-packagist.cn"}' - 删掉
composer.json中所有"replace": {"bower-asset/*": "*"}声明,否则前端资源直接被跳过
不清理它,换再快的镜像也白搭——网络层没堵,但进程层早被它拖垮。
classmap-authoritative 模式让 autoload 快,但也让 class_exists() 行为突变
启用 composer dump-autoload --classmap-authoritative --no-dev 后,class_exists('DynamicHandler') 不再 fallback 到 PSR-4 查找,找不到就立刻返回 false。这对 Yii 的动态配置(比如 'class' => $config['handler'])是隐形断点。
容易踩的坑:
-
autoload.classmap目录路径写错大小写(如["Models/"]vs["models/"]),Linux 下直接扫不到类 - 没提前在
composer.json里声明要扫描的目录,生成的autoload_classmap.php就是空的 - 类文件用了 PHP 8.2+ 语法(如
enum),而当前 PHP 版本低于 8.2,Composer 扫描时静默跳过,不报错也不提示
真正影响性能的是高频固定类(如 yii\base\Model),别试图把整个 vendor/ 加进 classmap——Composer 自己管更稳,你只优化自己的 @app 和 @common 目录就行。










