composer怎么提速_composer下载速度慢解决方法

2次阅读

国内直连 packagist.org 因境外路由、DNS 解析慢、TLS 不稳及 CDN 距离远导致 composer install 卡在 downloading;应切换阿里云等镜像源,并检查 CA 证书、DNS 和 php.ini 配置。

composer怎么提速_composer下载速度慢解决方法

为什么 composer install 卡在 downloading(尤其是 packagist.org)

国内直连 packagist.org 会走境外路由,DNS 解析慢、TLS 握手不稳定、CDN 节点远,导致下载时长波动极大,甚至超时失败。这不是你网络差,是默认源物理距离太远。

实操建议:

  • 临时切镜像源:运行 composer config -g repo.packagist composer https://packagist.phpcomposer.com(已停用)或更可靠的 composer config -g repo.packagist composer https://packagist.proxy.tencent.com
  • 推荐用阿里云镜像:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
  • 如果项目已 lock,改完源后务必删掉 vendor/composer.lockcomposer install,否则仍可能复用旧下载地址

composer update 太慢,是不是必须重下所有包?

不是。默认 composer update 会重新解析全部依赖树并尝试升级到最新兼容版本,触发大量远程元数据请求(packages.json),这才是卡顿主因,不是下载本身。

实操建议:

  • 只更新某几个包:用 composer update monolog/monolog guzzlehttp/guzzle,跳过全量分析
  • 禁用自动更新 lock:加 --no-update 参数先改 composer.json,再单独跑 composer update --lock
  • 关掉冗余日志:composer update -q(quiet 模式)能减少 I/O 等待,对 CI 环境明显

用了镜像源还是慢?检查这三件事

镜像源只是第一步,本地环境和配置不当照样拖垮速度。

常见错误现象:

  • 执行 composer diagnosecurl: (60) ssl certificate problem → 说明 CA 证书过期或 curl 配置异常,会反复重试
  • composer show 响应极慢 → 可能 DNS 被污染,试试加 --dns=114.114.114.114(仅 Composer 2.5+ 支持)
  • PHP 的 openssl.cafile 未设置 → 在 php.ini 中补上真实路径,比如 openssl.cafile=/etc/ssl/certs/ca-certificates.crt

性能影响:未校验证书或 DNS 不稳时,单个包元数据请求可能耗时 10s+,叠加几十个包就成分钟级。

docker 构建里 composer install 反复慢?别硬扛

容器每次构建都重装 vendor 是最大浪费。镜像层缓存失效、无 DNS 优化、没复用已下载包,三者叠加必然慢。

实操建议:

  • composer install --no-dev --optimize-autoloader 放在 Dockerfile 靠前位置,确保 composer.lock 变更才重建 vendor 层
  • 挂载宿主机 Composer 缓存目录:-v ~/.composer/cache:/root/.composer/cache,避免重复下载
  • FROM php:8.2-cli 后立刻换源:RUN composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

容易被忽略的是:Docker 默认 DNS 是 8.8.8.8,国内访问极不稳定,必须在 /etc/docker/daemon.json 里配 "dns": ["223.5.5.5", "114.114.114.114"] 才算真正生效。

text=ZqhQzanResources