必须执行composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/,键名严格为repo.packagist(单数)、type值显式写composer、URL末尾带/,验证输出应为完整URL或JSON对象,空/null或含packagist.org即未生效。

换镜像源是必须做的第一步,不是“试试看”,不换源其他优化基本无效。
怎么确认并正确设置国内镜像源
执行 composer config -g repo.packagist,输出必须是类似 "https://mirrors.aliyun.com/composer/" 的完整 URL。空、null 或仍显示 packagist.org 都说明没生效。
- 键名必须是
repo.packagist(不是repos.packagist或mirror) - 命令中必须带
composer这个 type 值:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - URL 必须以
/结尾,少斜杠会导致拼接错误,返回 404 - 旧版 Composer(1.x)不识别
repo.packagist,得用:composer config -g repos.packagist '{"type":"composer","url":"https://mirrors.aliyun.com/composer/"}' - 项目级
composer.json中若已有repositories,会覆盖全局配置;验证是否真走镜像,加-vvv看日志里下载域名是不是mirrors.aliyun.com
换源后还卡在 downloading,重点检查这几个点
镜像只加速下载,不解决依赖解析或本地处理阶段的卡顿。常见真实瓶颈:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
COMPOSER_MEMORY_LIMIT=-1临时提高内存限制:默认 128M 在解析复杂依赖图时经常不够 - Xdebug 启用中会让
Resolving dependencies慢 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 - 某些私有包硬编码了 GitHub URL(比如
"dist": {"url": "https://github.com/..."}),这类请求绕不开镜像,会撞 GitHub 限速;需配github-oauth.github.comToken 或改用 Gitee zip 地址
并行下载和超时参数怎么设才有效
Composer 2.2+ 已弃用 parallel-downloads,改用 http-max-concurrent-downloads。它只对 composer install 有效,对 update 几乎无用。
- 设值推荐 8–10:
composer config -g http-max-concurrent-downloads 10;设成 20 容易触发本地文件竞争或镜像限流 - 必须同时加大超时:
composer config -g http.timeout 300和composer config -g process-timeout 3600 -
--prefer-dist是生产环境必加项,避免 git clone;但注意它不能跳过 autoload 生成——如果只是拉骨架项目,用composer create-project --no-install更快 - 别再装
hirak/prestissimo:它在 Composer 2.x 中已失效,甚至会静默退化为单线程
CI/CD 和 vendor 目录里的隐藏耗时
CI 构建慢,90% 不是网络问题,而是缓存策略或 autoload 生成开销。
- 不要缓存整个
vendor/目录——PHP 版本、扩展、composer.lockhash 微小变化都会导致不兼容 - 应缓存
~/.composer/cache(Linux/macOS)或%USERPROFILE%\AppData\Roaming\Composer\Cache(Windows) - CI 中推荐组合使用:
composer install --no-dev --prefer-dist --no-autoloader --no-scripts,autoload 留到构建末尾统一 dump - 如果项目启用了
"classmap-authoritative": true或"optimize-autoloader": true,每次update都会强制全量扫描vendor/,开发环境建议关掉:composer config authorative false(注意拼写是authorative)
最容易被忽略的是 platform 配置和 classmap-authoritative 模式——它们不报错、不提示、不走网络,却能让一次 update 多花 2 分钟以上。

















