直接加--timeout=600即可,必须带等号,否则被静默忽略;该参数临时生效,控制整个命令生命周期(含解析、下载、解压、脚本执行)最多10分钟,超时抛出processtimedoutexception。

直接加 --timeout=600 就行,但必须带等号,不带会被忽略。
命令行参数 --timeout= 怎么用
这是最常用、最轻量的临时调整方式,只对当前命令生效,适合 CI 调试或本地救急。
-
--timeout=600表示整个composer install或composer update流程最多运行 10 分钟,超时后抛出ProcessTimedOutException - 错误写法:
composer install --timeout 600(缺等号)→ Composer 静默忽略该参数,仍走默认 300 秒 - 该参数控制的是“整体生命周期”,包括依赖解析、HTTP 下载、解压、执行脚本等全部阶段
- Composer 2.2+ 才支持
--http-basic-timeout单独调 HTTP 层,若只加--timeout但网络慢,仍可能卡在下载 ZIP 包时失败
COMPOSER_PROCESS_TIMEOUT 环境变量是否更可靠
比命令行参数优先级更高,且可复用,但要注意隐含行为。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 设为
0表示禁用超时:COMPOSER_PROCESS_TIMEOUT=0 composer install,但不推荐长期使用——一旦镜像不可用或网络卡死,命令会无限挂起 - 在 Docker 容器中设置该变量,需确认未被
docker run --stop-timeout或外层timeout命令包裹,否则 Composer 还没反应就被系统 kill - 环境变量会覆盖
composer.json和全局配置中的process-timeout值
为什么 set_time_limit() 对 composer install 无效
因为 composer install 是主 PHP 进程,它通过 proc_open() 启动子进程下载、解压、执行脚本——而 set_time_limit() 只作用于当前 PHP 进程,管不了子进程。
- 你在
post-install-cmd脚本里调set_time_limit(0)是有效的,但仅限该脚本自身 - 你在自定义 PHP 类中调
set_time_limit(),必须确保它在脚本执行早期就触发,否则可能被后续逻辑覆盖 - PHP CLI 模式下若
max_execution_time被disable_functions禁用,则set_time_limit()直接报错
真正卡住的地方往往不是 timeout 设置本身,而是 DNS 解析失败、镜像源不可达、或 php.ini 中的 default_socket_timeout(常为 60 秒)比你设的 http.timeout 还短——这时 Composer 根本等不到自己超时,就被 PHP 底层掐断了连接。










