必须换国内镜像源,执行composer config -g repo.packagist确认URL是否为https://mirrors.aliyun.com/composer/等国内地址,为空或仍显示packagist.org则未生效;旧版Composer需用repos.packagist配置,项目级repositories会覆盖全局设置;-vvv日志可验证实际下载域名;Resolving dependencies卡顿主因是PHP内存不足、xdebug启用、platform不匹配或composer.lock残留;parallel-downloads已弃用,应改用http-max-concurrent-downloads 10;CI中应组合使用--no-dev --prefer-dist --no-autoloader --no-scripts并缓存~/.composer/cache。

国内环境下 Composer 下载慢,不是网络问题,是默认走 packagist.org 导致 DNS 解析慢、TLS 握手卡、首字节延迟高;换镜像源不是“可选优化”,而是必须做的第一步。
怎么确认当前用的是哪个镜像源
执行 composer config -g repo.packagist,输出应为类似 "https://mirrors.aliyun.com/composer/" 的 URL。如果为空、null 或仍是 https://packagist.org,说明镜像没生效。
- 旧版 Composer(1.x)不识别
repo.packagist配置项,需改用composer config -g repos.packagist '{"type":"composer","url":"https://mirrors.aliyun.com/composer/"}' - 项目级
composer.json中若定义了repositories,会覆盖全局配置,此时要删或改项目配置 - 验证是否真走镜像:加
-vvv运行composer install,看日志里下载地址是不是镜像域名(如mirrors.aliyun.com)
为什么换了镜像还卡在 Resolving dependencies
这个阶段不走网络,但严重受 PHP 环境和依赖结构影响。常见真实原因包括:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
memory_limit过低(如 128M),导致依赖图解析失败重试 —— 临时加COMPOSER_MEMORY_LIMIT=-1再试 - 启用了
xdebug(运行php -v可确认),会让解析慢 5–10 倍 —— 用php -d xdebug.mode=off $(which composer) install临时禁用 -
platform配置与实际 PHP 版本不匹配(如"php": "7.4"却在 PHP 8.2 上运行),触发降级查找逻辑 -
composer.lock残留已下线包的引用,导致回退搜索 —— 删掉vendor/和composer.lock,再用composer install --no-cache
parallel-downloads 和 http-max-concurrent-downloads 有什么区别
这是最容易混淆的两个配置项,新版 Composer(2.2+)只认后者,前者已弃用。
-
parallel-downloads是 Composer 2.2 初期引入的配置名,但很快被http-max-concurrent-downloads替代;设了parallel-downloads不生效,也无报错 - 正确命令是:
composer config -g http-max-concurrent-downloads 10(推荐值 8–10,别超 12) - 该设置仅对
composer install有效;composer update因需实时计算依赖图,仍存在串行瓶颈 - 并发太高会触发临时文件竞争(
file_put_contents(/tmp/): failed to open stream)或镜像站限流,此时需降到 6
CI/CD 中哪些参数组合最省时间
CI 场景不需要 autoload、不需要脚本、不需要 dev 包 —— 所有非必要步骤都该关掉。
- 必加:
--no-dev --prefer-dist --no-autoloader --no-scripts - 装完补 autoload:
composer dump-autoload --optimize --classmap-authoritative - 避免反复重装:确保
composer.lock提交进 Git,CI 中只跑install,不跑update - 缓存重点:CI 缓存
~/.composer/cache目录,而非vendor/(vendor 太大且易受平台配置影响)
镜像源 + 并发数 + CI 参数三者必须咬合使用,单独调高并发却仍走官方源,或者开了 --no-dev 却忘了清掉 platform 配置,都会让优化失效。最常被忽略的是 composer clear-cache —— 换源后不清理,旧缓存里的元数据仍会尝试回源请求。


















