Composer装包慢90%非网络问题,而是镜像未生效(需用复数repos.packagist并清缓存)、Xdebug未禁用(拖慢5–10倍)、parallel-downloads未正确配置(仅对install生效且需配合镜像与prefer-dist)、或classmap-authoritative模式强制全量扫描vendor。

Composer 装包慢,90% 不是网络差,而是镜像没生效、Xdebug 没关、缓存没清、或配置互相覆盖——换源只是起点,不是终点。
composer config -g repo.packagist 配置为什么总不生效
现象:改了 composer.json 里的 repositories,但 composer create-project 还是卡在 Resolving dependencies;或者 composer config -g repo.packagist 输出为空或仍是 packagist.org。
- 必须用复数形式:
repos.packagist(不是repo.packagist),拼错就完全不认 -
composer create-project和composer global require压根不读项目级composer.json,只认全局配置 - 旧缓存会强制回退到官方源,执行
composer clear-cache后再验证 - 验证是否生效:运行
composer config -g repos.packagist,输出必须是{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"} - 别用已停更的源,比如
https://packagist.phpcomposer.com(2025 年底下线),访问直接 404
为什么禁用 Xdebug 能让 composer install 快 5–10 倍
现象:CPU 占满、网络几乎不动、卡在 Resolving dependencies 或 Loading composer repositories;php -v 输出里带 xdebug 字样。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- Xdebug 会为每个函数调用注入钩子,而 Composer 的依赖求解器(Solver)本身就是 CPU 密集型任务
- 临时禁用最安全:
php -d zend_extension= -d xdebug.mode=off $(which composer) install - CI 环境中加
export XDEBUG_MODE=off(PHP 8.1+)即可,不用动php.ini - 别用
php -n,它会禁掉所有扩展,可能让某些插件(如hirak/prestissimo)失效
parallel-downloads=10 为什么开了也没提速
现象:设了 composer config -g parallel-downloads 10,但耗时不变,甚至报 file_put_contents(/tmp/): failed to open stream。
- 这个参数只对
composer install有效,composer update仍部分串行,别指望它也快 - 并发依赖镜像源支持 HTTP/2 多路复用,腾讯云/华为云偶尔同步延迟,阿里云目前最稳
- 并发过高会触发临时文件竞争,降到
6或8更可靠 - 如果镜像没切成功,
--prefer-dist会 fallback 到 source 模式,根本没法并发下载 - 必须同步配好:
composer config -g prefer-dist true+composer config -g repos.packagist https://mirrors.aliyun.com/composer/
vendor/autoload.php 生成阶段为什么会比下载还慢
现象:下载完成很快,但卡在 Generating autoload files 超过 1 分钟,尤其在 Laravel + 大量依赖项目中。
- Composer 3.x 默认启用
classmap-authoritative模式,每次update都强制全量扫描vendor/目录 - CI 或部署阶段不需要立刻可运行,加
--no-autoloader跳过这步,后续单独跑composer dump-autoload --optimize -
--no-scripts阻止执行post-install-cmd,避免意外触发 npm 构建、Redis 清缓存等重型操作 - 注意:
--no-autoloader后的vendor/不能直接运行 PHP,必须补一次composer dump-autoload --optimize - 如果项目用了
"type": "path"本地仓库,这些包不参与并发下载,也不走--prefer-dist,会拖慢整体节奏
真正卡点常藏在 autoload 重建、脚本执行、私有源 fallback 或 lock 文件校验里——盯着日志末尾的 Downloading 往往会漏掉这些更耗时的本地操作。

















