Composer不支持KB/s级限速,仅能通过http-max-concurrent-downloads控制并发数(推荐2–6),并发降级或cURL未启用会导致假性“单线程”卡顿,需结合镜像、DNS及环境优化。

Composer 本身不提供“限制单线程下载速度”的功能,它只控制并发数,不支持限速(如 KB/s 级别)。所谓“单线程下载慢”,其实是并发被意外降级为 1 导致的假象。
为什么你看到的像是“单线程”?
Composer 默认不是单线程,但以下情况会让它退化成串行表现:
-
http-max-concurrent-downloads被设为1(或未设置而 fallback 到旧版默认值 3,再因环境问题进一步降级) - PHP 未启用
cURL扩展:执行php -m | grep curl,无输出即退化为 stream_context + file_get_contents,无并发能力 - 镜像响应超时(如 QPS 被限),Composer 内部重试逻辑阻塞整个并发池,看起来像“一个包卡住,后面全停”
- DNS 解析失败或缓慢,
-vvv日志里会卡在Resolving阶段,非下载阶段但表现类似卡顿
真正可控的是并发请求数,不是带宽速度
Composer 没有 --limit-speed 或 download-rate 这类参数。你要调的是并发连接数,它间接影响总吞吐量:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 确认版本 ≥2.2:
composer --version,否则http-max-concurrent-downloads不生效 - 全局设为 6~8:
composer config -g http-max-concurrent-downloads 6 - CI/弱网环境临时压到 2:
COMPOSER_MAX_PARALLEL_HTTP_REQUESTS=2 composer install - 验证是否生效:运行
composer install -vvv 2>&1 | grep "Downloading",应看到多行同时输出
想“人为变慢”?只能绕路做系统层限速
如果真需要压制 Composer 下载带宽(比如测试弱网、避免占满内网出口),得用外部工具,Composer 自身不参与:
- Linux/macOS 可用
trickle:trickle -s -u 100 composer install(限制上行 100KB/s) - Docker 中可在构建阶段用
tc(traffic control)限速网卡 - Windows 无原生等效工具,需借助第三方如 NetLimiter 或 WSL2 + trickle
- 注意:这类限速作用于整个进程,会影响 DNS、TLS 握手、所有 HTTP 请求,不只是包体下载
最常被忽略的一点:你以为在调“速度”,其实是在调“并发稳定性”。国内镜像普遍有 QPS 限制,设太高(如 10+)反而触发 429 Too Many Requests 或 curl: (28) Operation timed out,结果比设 3 还慢。不要迷信“越大越好”,2~6 是多数场景的真实甜点区间。

















