应优先调高 http.timeout 至 600 秒,因其控制依赖解析阶段的 HTTP 请求超时;禁用 packagist.org fallback 并切换可信镜像源;CI/CD 中须用 COMPOSER_HTTP_TIMEOUT 环境变量而非 --timeout 参数。

同步更新列表(composer update)卡在 Resolving dependencies 阶段超时,基本不是网络连不上,而是 Composer 在解析依赖树时反复尝试连接 packagist.org 或其镜像,但 DNS、TLS 握手或首字节响应慢,触发了默认仅 60 秒的 http.timeout。
看最后输出行,定位卡点在哪一层
运行 composer update -vvv,紧盯终端最后一行:
- 停在
Resolving dependencies:说明卡在元数据获取阶段,是 HTTP 请求(含 DNS 查询 + TLS 握手 + 等待packages.json首字节)超时,该调http.timeout - 停在
Downloading https://...:同上,也是http.timeout不足 - 停在
Executing command(如git clone):子进程执行超时,靠process-timeout或COMPOSER_PROCESS_TIMEOUT - 停在
Writing lock file或之后:通常是 PHP 内存不足或 autoload 生成阻塞,和网络超时无关
优先调高 http.timeout,不是 process-timeout
process-timeout 控制整个命令生命周期(含解压、脚本、autoload),对 Resolving dependencies 阶段没用;真正管“连不上包列表”的是 http.timeout —— 它决定单次 HTTP 请求最大等待时间。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 全局设为 600 秒:
composer config -g http.timeout 600 - 临时生效(推荐 CI 中用):
COMPOSER_HTTP_TIMEOUT=600 composer update - 别设为 0:部分版本不支持无限等待,反而会 fallback 到默认值
-
http-basic.timeout是 v1 废弃项,v2 完全忽略,设了白设
换镜像源必须关掉 packagist.org fallback
只执行 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ 不够。Composer 默认仍保留 packagist.org 作为兜底源,一旦镜像响应稍慢,它就会自动 fallback 并重试,导致总耗时翻倍甚至直接超时。
- 禁用 fallback:
composer config -g repo.packagist false - 验证是否生效:
composer config -g repos应只显示阿里镜像条目,不含packagist.org - 项目级若硬编码了
repositories字段,需手动清理,否则会覆盖全局配置
CI/CD 中必须用环境变量而非 --timeout 参数
在 GitHub Actions、GitLab CI 等环境中,仅加 --timeout=1200 不可靠 —— 很多插件或自定义 installer 启动的子进程不读命令行参数,只认环境变量。
- 务必设置:
COMPOSER_HTTP_TIMEOUT=600 COMPOSER_PROCESS_TIMEOUT=1200 - 配合
--prefer-dist:避免因 git clone 卡住引发子进程超时 - 确认
COMPOSER_HOME已挂载且持久化,否则容器重启后镜像配置丢失 - WSL2 或 Docker for Mac 用户额外注意:
Generating autoload files卡住大概率是文件系统性能问题,不是超时配置能解决的
真正难搞的从来不是 timeout 数值本身,而是你改了 process-timeout 却发现卡在 Resolving dependencies —— 那说明你根本没打到真正的瓶颈点。盯住 -vvv 最后一行,比盲目加参数有用十倍。

















