我们必须使用 GitHub 上的 VCS 存储库将几百个包迁移到 composer,我注意到即使在根服务器上也非常慢,使用平均包含 20 到 30+ 个包的应用程序。在家用机器上,情况更糟。事实上,它使工作非常乏味,并且在某种程度上是不可接受的。
是否有任何改进可以加快速度?拉链或包装师也不是我们的选择。
更新: 现在有了 Composer v2+,你不再需要 Prestissimo 了。您可以使用此新版本实现更好(令人难以置信的)速度。
<小时 />使用 Prestissimo (仅限作曲家 v1-)
Prestissimo 是一个全局的 Composer 插件,可以并行安装依赖项。它的速度太快了。值得注意的是,Prestissimo需要cURL,它可能无法在某些防火墙或代理后面工作。我个人根本没有遇到任何问题。
确保您的composer.lock
文件位于版本控制和主项目中对于快速composer install
至关重要。它包含软件包的列表和有关它们(包括特定版本)的信息,Composer 使用这些软件包来加快安装过程。
有关更多详细信息,请参阅 https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file。
我会尝试的两件事
1) 使用详细选项 -v 查看需要这么长时间的时间。这可能是您的互联网带宽或延迟,或其他令人惊讶的事情。
2) 使用 --no-dev 和 --prefer-dist 选项来防止作曲家考虑您在生产中未使用的版本。
第三:)您可以在某处运行常规的后台编辑器更新,以使缓存保持最新。所以至少你的安装会快一点。
(附言。我确定有 -v -vv 和 -vvv 用于详细级别,但现在我在文档中看不到......我以为只有第二级才能给你下载速度。
禁用 XDebug
对于像我这样试图加快 GitHub Actions CI/CD 工作流composer install
的人来说,禁用xdebug
和类似的调试工具可能会导致构建时间和使用量显着减少。
GitHub 的 Ubuntu 22.04 Github Actions runner 文档指出 Xdebug 默认处于启用状态,Shivam Mathur 的 Setup PHP 操作文档也提到了这一点:
它注意:默认情况下,Xdebug 在 Ubuntu GitHub Actions 图像上处于启用状态,因此如果您没有在工作流程中使用它,建议您禁用它,因为这会对您的 PHP 性能产生积极影响。有关详细信息,请参阅禁用覆盖范围部分。
建议通过将coverage: none
添加到 GitHub 操作工作流来禁用它:
- 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。