旧项目更新超时主因是镜像未生效、元数据缓存陈旧及process-timeout不足三者叠加;需先定位卡在Resolving dependencies(DNS/镜像问题)、Downloading(HTTP超时)还是Executing command(process-timeout)阶段,再针对性处理。

卡在 Resolving dependencies 是 DNS 或镜像没生效
这一步不发 HTTP 请求,只查域名和元数据索引,http.timeout 和 process-timeout 完全无效。现象是终端静止、无日志滚动。
- 运行
dig mirrors.aliyun.com @114.114.114.114,看是否返回有效 IPv4 地址;若超时,说明本地 DNS 被污染 - 执行
composer config -g repos.packagist,输出必须是完整 JSON,例如{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"};若为空、为false或仍是https://packagist.org,说明被项目级配置覆盖 - 检查项目根目录
composer.json是否存在"repositories"字段(哪怕只是{}),有就删掉整段——它会强制忽略全局镜像 - 删完立刻运行
composer clear-cache,否则旧解析结果仍被复用
卡在 Downloading https://… 是 HTTP 层真超时
此时才轮到 http-basic-timeout 和镜像源起作用。默认 60 秒对国内镜像首字节延迟极不友好,尤其拉 laravel/framework 这类大 dist 包时。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 全局设高:运行
composer config -g http-basic-timeout 300(Composer ≥ 2.2 支持) - 项目级更稳妥(CI 必选):在
composer.json的"config"段加"http-basic-timeout": 300 - 必须带末尾斜杠:
https://mirrors.aliyun.com/composer/,少斜杠会导致重定向失败 - 私有 Satis 源或 CDN 缓存严重时,加
--no-cache强制跳过缓存层
卡在 Executing command 或 install/update 整体停住
这是 process-timeout 在起作用,控制 git clone、unzip、post-update-cmd 等子进程生命周期,默认仅 300 秒,和网络无关。
- 临时绕过:运行
composer update --process-timeout=0(慎用,可能卡死)或--process-timeout=1200 - 永久生效(推荐):执行
composer config -g process-timeout 1200 - 若已设为 0 仍失败,大概率是内存不足——检查
php -i | grep memory_limit,确保 CLI 下 ≥ 1.5G - 旧项目常含冗余脚本,试
composer update --no-plugins --no-scripts;若秒出,问题就在scripts或插件里
删了 cache 还不拉新版?metadata 缓存没清干净
composer clear-cache 不动 ~/.composer/cache/repo/https---packagist.org/ 里的元数据快照,它不会自动过期,且优先级高于远程。
- 手动删目录:
rm -rf ~/.composer/cache/repo/https---packagist.org/(Linux/macOS)或对应 Windows 路径 - Composer ≥ 2.5 可用
composer update --refresh替代手动删除 - 删完别直接
install,先跑composer update --dry-run -v,看到Downloading https://...日志才说明 metadata 真重拉了 - 别忽略
composer.lock和vendor/composer/installed.json——它们硬编码版本与哈希,清 cache 不清它们等于白清
fxp/composer-asset-plugin)和未清理的 post-install-cmd,单靠延长超时只会掩盖真实瓶颈。定位阶段比调参重要得多。

















