卡在resolving dependencies是dns或域名访问问题,非超时;卡在downloading需调http-basic-timeout;卡在executing command需调process-timeout;卡在generating autoload files属文件系统或php配置问题。

直接调 process-timeout 和 http-basic-timeout 是最常见但最容易踩坑的做法——不看卡在哪一层,光加 timeout 就是白等。
怎么看 Composer 其实卡在哪儿?
运行 composer update -vvv,盯住最后一行输出:
- 停在
Resolving dependencies:不是超时问题,是 DNS 解析失败或 packagist.org 域名不可达。试dig packagist.org或换 DNS(如114.114.114.114) - 停在
Downloading https://...:HTTP 层卡住,http-basic-timeout才管用(Composer 2.2+ 支持) - 停在
Executing command (CWD: ...):比如git clone或unzip卡死,得靠process-timeout或环境变量COMPOSER_PROCESS_TIMEOUT - 停在
Generating autoload files后无响应:和网络无关,是文件系统慢(如 WSL2 symlink)、APCu 未启用 CLI 模式,或磁盘 I/O 阻塞
两个 timeout 参数到底怎么设?
process-timeout 和 http-basic-timeout 完全不重叠,混着调等于蒙眼改配置:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
process-timeout控制整个composer update命令从开始到结束的总耗时(含解压、运行脚本、生成 autoloader),默认 300 秒。大项目建议设为1200(20 分钟) -
http-basic-timeout控制单次 HTTP 请求(DNS + TLS + 首字节 + body 传输)上限,默认仅 60 秒。下载大 dist 包或镜像首字节延迟高时,必须同步提高,推荐300~600 -
http-basic.timeout是 v1 废弃项,v2 完全不读取;设了也白设
CI/CD 里不能只靠加 timeout
流水线环境更易超时,光拉长参数治标不治本:
- 必须配国内镜像:
composer config -g repos.packagist.org.url https://mirrors.aliyun.com/composer/ - 禁用 fallback 到官方源:
composer config -g repo.packagist false,否则会悄悄拖慢 - 强制用 dist 包:
--prefer-dist,避免git clone卡在子进程 - 环境变量比命令行参数更可靠:
COMPOSER_PROCESS_TIMEOUT=1200能覆盖插件启动的子进程,--timeout=1200有时无效 - 检查容器内存是否够:
memory_limit建议 ≥ 1.5G,尤其update解析锁文件阶段极吃内存
post-update-cmd 卡住经常被当成网络超时
很多项目在 composer.json 的 scripts 里写了 php artisan config:cache 这类命令,它们本身执行慢或需要交互,就会触发 ProcessTimedOutException:
- 手动运行对应命令,确认是否真能完成(加
--no-interaction避免卡在 prompt) - 临时用
--no-scripts测试,如果update立刻完成,问题就出在脚本里 - 某些 Laravel 插件会在 post-update 阶段自动清缓存,若缓存驱动配错(比如 Redis 不通),也会假性“卡住”
真正难搞的从来不是 timeout 数值本身,而是你没意识到 Generating autoload files 后那几十秒沉默,可能只是 WSL2 下遍历 symlink 花了 47 秒——这种地方,加再大的 timeout 也没用。










