超时中断需分层诊断:dns卡顿调系统dns或禁用packagist,http下载卡顿调http-timeout,子进程卡顿配git超时或token,换镜像后须验证配置、清缓存。

超时中断不是网络“不通”,而是 Composer 在不同阶段卡在了不同瓶颈上——DNS、HTTP 请求、子进程或 autoload 生成,各自要调不同的参数,混着改只会白等。
Resolving dependencies 卡住就是 DNS 解析慢
看到命令停在 Resolving dependencies 长时间没反应,别急着调 --timeout,这一步根本还没开始下载,纯粹是查域名 IP 耗时太高。哪怕你已设了阿里云镜像,Composer 启动时仍会先尝试解析 packagist.org 或镜像域名(如 mirrors.aliyun.com)。
- 用
time nslookup packagist.org和time nslookup mirrors.aliyun.com验证:若耗时 >1s 但ping很快,就是 DNS 拖累 -
composer config -g repo.packagist只改镜像地址,不解决初始 DNS 查询,必须配系统级 DNS,比如 Linux/macOS 改/etc/resolv.conf,Windows 改网卡 IPv4 的 DNS 服务器为223.5.5.5和119.29.29.29 - 最干脆的绕过方式:加环境变量
COMPOSER_DISABLE_PACKAGIST=1,跳过所有健康检查和默认源探测
Downloading 卡住得调 http-timeout,不是 process-timeout
如果 -vvv 输出停在类似 Downloading https://mirrors.aliyun.com/composer/p/provider-2024-07/xxx.json,说明单次 HTTP 请求卡死,这时候 process-timeout 再大也没用——它管的是整个命令生命周期,而这里只是某一个 GET 请求没回包。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
http-timeout控制每次请求(含 DNS、TLS 握手、首字节等待、body 下载)的最大秒数,默认仅 60 秒;设为600更稳妥:composer config -g http-timeout 600 - 注意:
http-basic-timeout是 v1 废弃项,v2 完全不读;process-timeout默认 300 秒,适合大项目跑脚本,建议设为1200,但它不解决单个下载卡死 - 临时生效可直接带参数:
composer install --http-timeout=600
Cloning 或 Executing command 卡住是子进程问题
当 -vvv 最后一行是 Executing command (CWD: ...) 或 Cloning into '/path/to/vendor/xxx',说明 Composer 已把活交给了 git clone、unzip 或其他外部命令,此时 http-timeout 和 process-timeout 都失效了。
- 私有 GitHub/GitLab 包常因 API 限流卡在
https://api.github.com/,需配置 GitHub Token 到~/.composer/auth.json - Git 克隆慢?优先用
--prefer-dist(下 ZIP),避免走 SSH;若必须用 Git,确保GIT_SSH_COMMAND设了超时:GIT_SSH_COMMAND="ssh -o ConnectTimeout=10" - WSL2 或 Docker 中克隆慢,可能是文件系统性能问题,不是 Composer 配置能解决的
为什么换镜像后还报错 Connection refused 或 404
换源后仍直连 packagist.org 或返回 404,大概率是配置没生效或 URL 写错,不是网络问题。
- 运行
composer config -g repo.packagist,输出必须是完整 JSON:{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"};缺斜杠、少type、漏-g都会导致静默失败 - 镜像 URL 末尾必须带
/,写成https://mirrors.aliyun.com/composer会拼出非法路径/composerpackages.json - 项目根目录
composer.json里若有"repositories"字段(哪怕空数组[]),会覆盖全局镜像,删掉或临时composer config --unset repositories - 换源后必须执行
composer clear-cache,否则旧 provider 地址仍在缓存里复用
真正麻烦的从来不是 timeout 数值本身,而是你不知道当前卡在哪一层——DNS、HTTP、子进程还是 autoload。先跑 composer install -vvv 看最后一行输出,再决定动哪个开关,比盲目加 --timeout=3600 有用得多。










