composer不支持限速断点续传,卡住主因是超时或缓存损坏;应调高process-timeout、清缓存、换镜像源,而非折腾限速参数。

Composer 本身不支持限速场景下的断点续传,所谓“网络限速导致中断”,本质是超时或缓存损坏触发的假性失败——直接调高超时、清缓存、换镜像源,比折腾限速参数更有效。
为什么composer install卡住不动却不报错
限速本身不会让 Composer 报错,但会拉长单次请求耗时,触发两个默认阈值:一是 process-timeout(默认 300 秒),控制整个下载/解压流程;二是 http.timeout(默认 15 秒),控制单次 HTTP 连接。一旦任一超时,它就中断并可能残留半截 ZIP 文件在缓存里。
- 现象常为 “Downloading https://mirrors.aliyun.com/composer/…”,然后光标停住,无输出也无错误
- 这不是限速问题,是 Composer 在等一个永远不会完成的响应——它不会主动降速重试,也不会分块续传
- 用
composer install -vvv可看到最后卡在哪条 URL,确认是否真被限速(比如响应头带X-RateLimit-Remaining: 0)
必须执行的三步清理与重试
限速环境最容易留下损坏缓存,重试前不清理只会反复失败。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 运行
composer clear-cache,确保~/.composer/cache/files/下没有残缺 ZIP - 删掉项目里的
vendor/和临时锁文件composer.lock.tmp(不要删composer.lock,除非你明确要重算依赖) - 加
--no-cache参数强制跳过本地缓存:composer install --no-cache --prefer-dist
关键配置:只改 process-timeout,别碰 http.timeout
http.timeout 控制单次连接,设太高反而掩盖真实网络故障;process-timeout 才决定 Composer 整体能忍多久,这才是限速场景下真正要调的。
- 全局生效(推荐 CI 或日常开发):
composer config -g process-timeout 3600(1 小时) - 项目级生效(更可控):在
composer.json的config段加"process-timeout": 3600 - 临时覆盖(调试用):
COMPOSER_PROCESS_TIMEOUT=7200 composer install - 注意:
--timeout=7200是命令行参数,等价于环境变量;--process-timeout是无效写法
镜像源不是可选项,是必选项
限速最常发生在直连 packagist.org 时,DNS、TLS、CDN 多层延迟叠加后,哪怕实际带宽够,也会因握手超时被判定失败。
- 阿里云镜像最稳:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 清华镜像同步快:
composer config -g repos.packagist composer https://mirrors.tuna.tsinghua.edu.cn/composer/ - 验证是否生效:
composer config -g repo.packagist应输出对应 URL,而不是packagist.org - 注意:某些包(如
"type": "git")仍会绕过镜像直连 GitHub,此时需额外配composer config -g github-protocols https
真正卡在同一个大 ZIP 包(比如 laravel/framework 超 100MB)时,说明镜像或网络已不可靠,这时手动下载 + 放入缓存目录才是唯一确定性方案,其他都是概率性缓解。










