直接调高process-timeout并换阿里云镜像可解决90%超时问题;卡在downloading https://...需调http.timeout(控制dns+tls+传输总时长),卡在git clone则需调process-timeout并配置git超时,同时禁用packagist.org回源以防失效。

直接调高 process-timeout 并换阿里云镜像,90% 的超时问题当场消失;只改 http.timeout 或只加 --timeout 参数,大概率白等。
卡在 Downloading https://... 就是 HTTP 层超时
这种现象最常见:命令停住不动,最后一行是 Downloading https://mirrors.aliyun.com/composer/dists/xxx.zip。这不是网络断了,而是单次 HTTP 请求等太久被砍掉。
-
http.timeout控制每次请求(DNS + TLS + 首字节 + 传输)的上限,默认仅 60 秒;大包或首字节延迟高时最先触发失败 - 设为
300~600更合理:composer config -g http.timeout 600 -
--http-basic-timeout=300是 Composer 2.2+ 才支持的临时参数,旧版本无效 - 注意:
config.timeout是 v1 废弃项,v2 完全不读,写了也白写
卡在 Executing command: git clone 就是子进程超时
遇到 "type": "git" 的包(比如 dev-main、私有仓库),Composer 会调系统 git clone,而它默认无限等待——真正在背后掐表的是 process-timeout。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
process-timeout管的是每个外部命令(git、unzip、php脚本)的最大执行时间,默认 300 秒 - 全局生效:
composer config -g process-timeout 1800 - 环境变量更可靠(尤其 CI 中):
COMPOSER_PROCESS_TIMEOUT=1800,能覆盖插件启动的子进程 - Git 本身也要设超时,避免卡死在握手阶段:
git config --global core.sshCommand "timeout 300 ssh"(Linux/macOS)
换镜像不是“配了就完事”,得关回源、验配置
只运行 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ 不够,很多项目仍直连 GitHub 或 Packagist 官方源。
- 检查是否真走镜像:
composer config -g repo.packagist输出必须是镜像 URL - 禁用 packagist.org 回源(关键!):
composer config -g repos.packagist.org false,否则镜像失效后自动 fallback 到境外源 - 项目级
composer.json里若有repositories字段,优先级高于全局配置,得手动清理或改成镜像兼容格式 - 私有 Git 包(
git@或https://github.com/...)不会走镜像,必须单独处理:强制 HTTPS、配 GitHub Token、设 Git 超时
Docker/WSL2 环境下容易忽略的底层卡点
明明超时参数拉到 3600,还是卡在 Generating autoload files 后没反应?那根本不是网络问题,是文件系统或 PHP 配置拖慢了扫描。
- WSL2 下 symlink 解析极慢,可临时关掉:
composer install --no-symlinks - Docker 容器内 DNS 失效很常见,启动时加
--dns 8.8.8.8或在/etc/docker/daemon.json设全局 DNS - PHP CLI 模式未启用 APCu 会导致 autoloader 生成慢几倍,确认
apcu.enable_cli=1已设 - NTFS 挂载卷(如 Windows 上的 Docker Desktop)对大量小文件 I/O 延迟高,别硬扛,换 Linux 原生环境或调整 vendor 目录位置
真正难搞的从来不是 timeout 数值本身,而是超时背后混着 DNS、Git、PHP 配置、文件系统四层问题——先用 -vvv 锁定卡点,再针对性出手,比无脑调高所有 timeout 有用十倍。










