Composer create-project命令在磁盘 IO 受限服务器上的加速技巧

秋涛同学_7460

秋涛同学_7460

2026-06-24

693人浏览

原创

create-project卡在“Extracting archive”是因低速磁盘导致小文件I/O延迟飙升,而非网络问题;应迁移cache-dir至SSD或tmpfs、禁用vendor挂载、清理缓存并关闭Xdebug等冗余功能。

composer create-project命令在磁盘 io 受限服务器上的加速技巧

为什么 create-project 在低速磁盘上卡在 “Extracting archive”

不是网络慢,是 Composer 解压几百个 ZIP 包时反复调用 stat()、open()、read(),而机械硬盘或挂载卷(尤其是 macOS/Windows 上的 Docker -v)会让这些小文件 I/O 延迟飙升。你看到的 “Extracting archive” 卡 40 秒以上,No space left on device 报错但 df -h 显示空间充足,基本就是 inode 耗尽或底层存储响应太慢。

  • 禁用 vendor 目录实时挂载:Docker 中别用 -v $(pwd)/vendor:/app/vendor,改用命名卷 -v composer-vendor:/app/vendor
  • 把 Composer 缓存移出低速盘:运行 composer config -g cache-dir /mnt/ssd/composer-cache(确保路径可写、不在 NFS 或 overlay2 上)
  • 临时用内存盘(Linux):sudo mount -t tmpfs -o size=2G tmpfs /mnt/ramdisk,再设 cache-dir 指向它
  • 清理旧缓存避免损坏包干扰:composer clear-cache,尤其之前失败过

如何绕过解压阶段直接复制 vendor 内容

create-project 默认走 dist 包(ZIP),但解压仍是瓶颈。真正快的方式是跳过下载+解压,让 Composer 直接从缓存硬链接或复制——这要求你已成功执行过一次,且缓存完整。

  • 加 --prefer-dist 强制走压缩包(默认已启用,但显式写明更稳妥)
  • 加 --no-scripts 防止 post-autoload-dump 等脚本触发额外文件操作
  • 加 --no-autoloader 避免生成 autoload 文件时扫描整个 vendor
  • 确保 COMPOSER_CACHE_DIR 指向 SSD 或 tmpfs,否则硬链接也慢

为什么 --no-dev 还是慢?检查依赖树是否真被裁剪

--no-dev 只跳过 require-dev 里声明的包,但若这些包又被主依赖间接引入(比如 phpunit 被某个 dev-require 的工具链依赖),它们仍会被拉下来。I/O 压力没减少。

Discussion Composer
Discussion Composer

围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par

下载
  • 先跑一次 composer show --tree,确认 dev-only 包是否真没出现在依赖树里
  • 删掉 composer.lock 后再试 create-project,避免锁文件残留 dev 分支引用
  • 用 composer why phpunit(举例)查清谁拖进了 dev 包,针对性排除
  • 生产环境初始化建议加 --stability=stable,避免自动选 dev-main 触发源码克隆

磁盘 IO 瓶颈下最该关掉的三个东西

有些功能默认开启,但在低速盘上会反复读写小文件,放大延迟。关掉它们比换镜像更立竿见影。

  • 关 Xdebug:php -d zend_extension= -d xdebug.mode=off /usr/bin/composer create-project ...,解析阶段慢 5–10 倍
  • 关自动加载优化扫描:--no-autoloader + 后续手动 composer dump-autoload --classmap-authoritative(等 vendor 就位后再做)
  • 关 Git 元数据:--remove-vcs,避免 git clone 后反复 git rev-parse 查 commit hash

实际执行时,create-project 的 I/O 压力主要集中在缓存目录和目标目录的写入节奏上。哪怕镜像再快、并发再高,如果 cache-dir 还在机械硬盘上,或者目标目录所在文件系统不支持高效小文件写入,提速就只是假象。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

composer

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

457

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

960

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

3172

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

1056

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

929

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

494

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

2896

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

5432

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

847

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpMyAdmin 安装文档
phpMyAdmin 安装文档

共0课时 | 0人学习

phpEnv手册
phpEnv手册

共0课时 | 0人学习