我们需要将几百个程序包迁移到使用Composer,并在GitHub上使用VCS存储库。我发现即使是在根服务器上,使用20到30个以上的平均应用程序也非常缓慢,而在家庭机器上更糟糕。实际上,这让工作变得非常乏味和不可接受。
有什么改进措施可以加快速度吗?对于我们来说,Zip或Packagist都不是一个选择。
我们需要将几百个程序包迁移到使用Composer,并在GitHub上使用VCS存储库。我发现即使是在根服务器上,使用20到30个以上的平均应用程序也非常缓慢,而在家庭机器上更糟糕。实际上,这让工作变得非常乏味和不可接受。
有什么改进措施可以加快速度吗?对于我们来说,Zip或Packagist都不是一个选择。
更新:现在使用Composer v2+,您不再需要使用Prestissimo插件,而是可以使用这个新版本实现更快(惊人的)下载速度。
使用Prestissimo(仅适用于Composer v1-)
Prestissimo是一个全局Composer插件,它可以并行安装依赖项。它非常快。需要注意的是Prestissimo需要cURL,可能无法在某些防火墙或代理后面工作。我个人没有遇到任何问题。
composer.lock
文件在版本控制中并且在你的主项目中是至关重要的,这可以使composer install
的速度更快。它包含了一个软件包列表以及有关它们的信息(包括具体版本),Composer使用它来加速安装过程。我建议您尝试以下两件事情:
1)使用-v选项查看是什么导致了速度变慢。这可能是因为您的互联网带宽或延迟等原因,或者其他一些意外情况。
2)使用--no-dev和--prefer-dist选项,以防止composer考虑您在生产中不使用的版本。
第三点:) 您可以在某个地方定期运行后台composer更新,以保持缓存的最新状态。这样至少您的安装会更快一些。
(附注:我确定文档中有-v、-vv和-vvv三个级别的详细信息,但我现在找不到了...我记得只有第二个级别可以给出下载速度。)
对于像我这样的人,他们在 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。
composer install
还是composer update
- ceejayozcomposer.lock
文件运行composer install
很慢,问题不在于 Composer。 - ceejayozcomposer install
使用锁定文件来加快安装速度。 - ceejayozcomposer update
命令。这个命令会安装最新版本的软件包,但你没有事先测试过它们,可能会破坏你的生产环境。应该首先在开发机器上运行composer update
命令,并进行测试。如果测试全部通过,就可以将composer.lock
文件部署到生产环境并在那里运行composer install
命令。这样,即使存在更新的(但未经测试的)软件包,Composer也会精确地安装你之前测试过的版本。 - Pᴇʜ