换镜像源并绕过dns缓存才真正生效,需同时配置阿里云镜像、设置composer_no_interaction=1、启用parallel-downloads=10,并在ci中使用--no-dev --prefer-dist --optimize-autoloader --classmap-authoritative等参数组合。

换镜像源 + 绕过 DNS 缓存才真正生效
光改 repo.packagist 地址只是第一步,PHP 的 cURL 默认复用 DNS 缓存,哪怕你配了阿里云镜像,解析仍可能走海外节点,下载卡在 10 KB/s。必须配合环境变量强制跳过缓存。
- 全局设置镜像:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 立即生效(绕 DNS):
COMPOSER_NO_INTERACTION=1 composer install - Docker 构建时,
RUN阶段就得提前配好镜像,否则每次构建都重拉元数据 - 如果
composer.lock是从国外源生成的,首次切镜像后可能报 hash 校验失败,删掉vendor和composer.lock重来更干脆
启用并行下载但别盲目调高并发数
parallel-downloads 是 Composer 2.2+ 原生支持的加速项,但默认关闭且只设为 3,不开它,install 就是单线程排队下载,再快的带宽也喂不饱。
- 全局启用:
composer config -g parallel-downloads 10(10 是多数机器合理上限) - 仅对
composer install有效;update仍需串行计算依赖图,提速有限 - 若报
file_put_contents(/tmp/): failed to open stream,说明并发太高触发临时文件竞争,降到6或8 - CI 环境建议固定该值,避免因机器差异导致构建不稳定
生产部署阶段跳过 autoload 和脚本执行
开发时需要自动加载和 post-install-cmd,但 CI 构建或容器镜像打包时,这些全是冗余开销——尤其当项目含 50+ 包时,--no-autoloader --no-scripts 能省下 30%+ 时间。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
composer install --no-autoloader --no-scripts:跳过生成vendor/autoload.php和所有钩子 - 后续补优化 autoload:
composer dump-autoload --optimize-autoloader --classmap-authoritative - 注意:
--no-autoloader后的vendor不能直接运行 PHP,必须补一次dump-autoload - 别在本地开发时误用,否则
new App\Service\Xxx会直接报错“类未找到”
组合参数要分场景,不是越多越好
同一套命令在开发、CI、生产中效果完全不同。比如 --classmap-authoritative 在本地启了,新增类不会被识别;而 --no-dev 在测试流水线里开了,PHPUnit 就跑不了。
- CI 构建推荐:
composer install --no-dev --prefer-dist --optimize-autoloader --classmap-authoritative - 本地开发慎用:
--classmap-authoritative和--no-autoloader,它们破坏动态发现机制 - 禁用 Xdebug:
XDEBUG_MODE=off composer install,否则速度直接打三折 - 别加
--verbose或-v到自动化脚本里,终端 IO 会拖慢整体耗时
最常被忽略的是:镜像配置和并行下载必须一起开,单独做任何一个,提速都不到一半;还有就是 composer.lock 是否提交、是否由同源生成,决定了换源后能不能直接 install 成功。










