如何加速Composer安装?

23

我们需要将几百个程序包迁移到使用Composer,并在GitHub上使用VCS存储库。我发现即使是在根服务器上,使用20到30个以上的平均应用程序也非常缓慢,而在家庭机器上更糟糕。实际上,这让工作变得非常乏味和不可接受。

有什么改进措施可以加快速度吗?对于我们来说,Zip或Packagist都不是一个选择。


1
你是在使用 composer install 还是 composer update - ceejayoz
如果使用有效的 composer.lock 文件运行 composer install 很慢,问题不在于 Composer。 - ceejayoz
是的,移除锁定文件会导致安装变慢。composer install 使用锁定文件来加快安装速度。 - ceejayoz
4
我绝不会在生产环境中使用 composer update 命令。这个命令会安装最新版本的软件包,但你没有事先测试过它们,可能会破坏你的生产环境。应该首先在开发机器上运行 composer update 命令,并进行测试。如果测试全部通过,就可以将 composer.lock 文件部署到生产环境并在那里运行 composer install 命令。这样,即使存在更新的(但未经测试的)软件包,Composer也会精确地安装你之前测试过的版本。 - Pᴇʜ
编辑历史记录来看,你似乎想要删除这个问题。根据你注册时同意的法律条款和条件,这样做可能会被反转:"您同意您向网络贡献的所有订阅者内容在知识共享署名-相同方式共享许可下永久且不可撤销地授权给 Stack Exchange。"我不是该网站的工作人员,但如果你有特殊原因需要删除,最好联系他们联系我们 - J Richard Snape
4个回答

37

更新:现在使用Composer v2+,您不再需要使用Prestissimo插件,而是可以使用这个新版本实现更快(惊人的)下载速度。


使用Prestissimo(仅适用于Composer v1-)

Prestissimo是一个全局Composer插件,它可以并行安装依赖项。它非常快。需要注意的是Prestissimo需要cURL,可能无法在某些防火墙或代理后面工作。我个人没有遇到任何问题。


npm install 也有类似的包吗? - Justin
当然,它叫做IED。谷歌一下就可以了。 - insign
2
@Justin Facebook发布了一个名为yarn的新软件包 https://code.facebook.com/posts/1840075619545360 - iamkristher
更新:在我的测试中,NPM 5比yarn更快(使用SSD)。 - insign
我很久以前开始使用这个。它是一个巨大的改进,但它并不是“快速”的。有任何新的发展吗? - Tarek Adam

8
确保你的composer.lock文件在版本控制中并且在你的主项目中是至关重要的,这可以使composer install的速度更快。它包含了一个软件包列表以及有关它们的信息(包括具体版本),Composer使用它来加速安装过程。
请参阅https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file了解更多细节。

6

我建议您尝试以下两件事情:

1)使用-v选项查看是什么导致了速度变慢。这可能是因为您的互联网带宽或延迟等原因,或者其他一些意外情况。

2)使用--no-dev和--prefer-dist选项,以防止composer考虑您在生产中不使用的版本。

第三点:) 您可以在某个地方定期运行后台composer更新,以保持缓存的最新状态。这样至少您的安装会更快一些。

(附注:我确定文档中有-v、-vv和-vvv三个级别的详细信息,但我现在找不到了...我记得只有第二个级别可以给出下载速度。)


0

禁用 XDebug

对于像我这样的人,他们在 GitHub Actions CI/CD 工作流程中尝试加快 composer install 速度的人来说,禁用 xdebug 和类似的调试工具可能会导致构建时间和使用率显着减少。

GitHub 的 Ubuntu 22.04 Github Actions runner 文档指出 Xdebug 默认是启用的,而 Shivam Mathur 的 Setup PHP action 的 文档 也提到了这一点:

注意:Ubuntu GitHub Actions 镜像默认启用 Xdebug,因此如果您在工作流程中没有使用它,则建议禁用它,因为这将对 PHP 性能产生积极影响。有关详细信息,请参阅禁用覆盖范围部分。

它建议通过将 coverage: none 添加到 GitHub Actions 工作流程来禁用它:

- name: Setup PHP
  uses: shivammathur/setup-php@v2
    with:
    php-version: 8.1
    coverage: none        # Add this
    extensions: :xdebug   # OR add this to only disable XDebug - note the colon
- name: Run Composer install
  run: composer install -o -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist

然而,请记住,如果您使用 GitHub Actions 的高级调试日志记录或者未来打算使用它,至少需要重新启用 XDebug。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接