关掉xdebug、换国内镜像、跳过--dev依赖可使composer install提速3–5倍;install应读lock文件,update才重算依赖;require需用命令声明并指定版本约束;autoload修改后须dump-autoload;缓存需落ssd且ci中正确缓存。

关掉 Xdebug、换国内镜像、跳过 --dev 依赖,这三件事做完,composer install 速度通常能提升 3–5 倍。效率瓶颈往往不在 Composer 本身,而在环境配置和使用习惯。
为什么 composer install 比 composer update 还慢?
这不是错觉。当 composer.lock 丢失、或 composer.json 被修改但没运行 update,Composer 就会退化为“先解析整个依赖树再安装”,相当于重跑一次 update 流程——而 update 本就是最耗时的操作。
-
install应该只读composer.lock,装确切版本;CI/CD 和生产部署必须用它 -
update会忽略锁文件、重算依赖、改写composer.lock,仅限本地调试或升级主包时使用 - 首次运行
install若无锁文件,它会自动执行update并生成锁——建议提前git commit一个空composer.lock,或由负责人统一生成 - 线上脚本里出现
composer update,等于把版本控制权交给了网络延迟和 packagist.org 的瞬时状态
composer require 加依赖时最容易踩的坑
手写 composer.json 不仅容易拼错包名,还会绕过 Composer 的语义校验和自动锁定逻辑。所有依赖都该用 require 命令声明,但参数选错一个,后续就全是隐患。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 测试/开发工具(如
phpunit/phpunit、phpstan/phpstan)必须加--dev,否则进require区,上线也会被加载 - 指定版本别只写
7.5,得带约束符:composer require guzzlehttp/guzzle:^7.5(推荐)或~7.5.0;写成7.5会被解释为严格等于7.5.0,基本匹配不到 - 只想加进
composer.json但暂不安装?加--no-update,比如composer require symfony/console --no-update,之后再单独update更可控 - 遇到
Your requirements could not be resolved且确认是 PHP 版本/扩展限制(如本地 PHP 8.3 但包只支持 8.2),可临时加--ignore-platform-reqs强行装——但别提交,CI 里禁用
autoload 不生效?90% 是因为没刷新映射
Composer 不监听文件增删,新增 PSR-4 目录、改了 autoload 配置、甚至改了 files 类型的全局函数文件,都必须手动刷新自动加载器。
- 改完
composer.json中的autoload字段后,必须运行composer dump-autoload - 开发中频繁加类又不想每次
update,加-o生成 classmap:composer dump-autoload -o,比默认 PSR-4 查找快不少 - 生产环境进一步提速?用
--classmap-authoritative:composer dump-autoload --optimize --classmap-authoritative,它会跳过文件系统扫描,但开发环境绝对不要加——新增类不会被识别 - 如果用了 APCu 扩展且未设
apc.enable_cli=1,可加--apcu-autoloader加速,但需确保 PHP 已启用apcu.so
缓存机制不是“清了就快”,而是“用了才快”
很多人只记得 composer clear-cache,却没让缓存真正起作用。Composer 缓存分两层:全局下载缓存(zip 包、元数据)和本地 autoload 缓存(APCu / opcache)。
- 确保
cache-dir指向 SSD 或高速磁盘,别挂到 NFS 或 Docker volume 上;配置示例:"cache-dir": "/tmp/composer-cache" - CI 中要显式缓存
~/.composer/cache目录,并用PHP_VERSION或composer.lock的 hash 当 cache key,避免跨版本污染 -
--prefer-dist(默认)走压缩包缓存,比--prefer-source快得多,除非你要改 vendor 里的源码 - 关掉 Xdebug 是最简单粗暴的提速方式——它会让 Composer 变慢 3–5 倍;用
php -d zend_extension= composer install临时禁用,或配个不含 Xdebug 的 CLI PHP 配置
真正卡住效率的,从来不是命令记不住,而是没意识到 composer.lock 是团队共识的载体、autoload 映射不会自动更新、以及缓存路径落在慢盘上时根本不会加速。这些点一旦忽略,再多技巧也白搭。










