加载 Symfony 2.8.3 时,travis+composer 反复失败

travis+composer repeatedly failing when loading Symfony 2.8.3

  • Installing symfony/symfony (v2.8.3) Downloading: 85%PHP Fatal error: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 6553600 bytes) in phar:///home/travis/.phpenv/versions/5.4.37/bin/composer/src/Composer/Util/RemoteFilesystem.php on line 174 Fatal error: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 6553600 bytes) in phar:///home/travis/.phpenv/versions/5.4.37/bin/composer/src/Composer/Util/RemoteFilesystem.php on line 174

几乎 我的项目的每个构建都失败了,因为我们从 Symfony 2.8.2 -> 2.8.3 更新并出现此错误(内存不足)。如果我 force 重建足够多次,它最终会通过,所以这显然不是项目的问题,而是 travis 或 composer 或组合(或 Symfony,我想)。它仅在尝试加载 Symfony 时失败。这个问题似乎很普遍,但我找不到任何关于 SO 或 GH 的问题。

有人对如何解决这个问题有什么建议吗?

log from failed build

composer.json file

.travis.yml file

我遇到了同样的问题,我使用的解决方法是在 before_install 中添加以下内容:

echo "memory_limit=520M" >> ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini

来自 travis 上的 this issue。在免费计划中,travis 提供 3GB 内存和最多 2 个可用内核

相反 composer update 您应该在 CI 服务器上调用 composer install -o(使用优化的自动加载程序)。

运行 作曲家安装将:

  • 检查 composer.lock 文件是否存在
  • 如果没有,执行作曲家更新以创建composer.lock
  • 如果composer.lock存在,从锁定文件安装指定的版本

运行 作曲家更新将:

  • 勾选composer.json
  • 根据您的版本规格确定要安装的最新版本 - 耗时和内存任务
  • 安装最新版本
  • 更新 composer.lock 以反映安装的最新版本

使用来自 composer.lock 文件的依赖版本将使您确信您的测试是在与您用于开发的完全相同的依赖上执行的。即使在您的 composer.json 中您使用 dev-master 版本。

如果出于某些原因你想 运行 composer update 在 travis 上然后禁用 xdebug 在作曲家安装之前(如果你的测试需要启用它)可以改进 composer 表现。 xdebug 在 travis 上默认启用。

Running Composer console commands while the php extension "xdebug" is loaded reduces speed considerably. This is even the case when all "xdebug" related features are disabled per php.ini flags, but the php extension itself is loaded into the PHP engine. Compared to a cli command run with "xdebug" enabled a speed improvement by a factor of up to 3 is not uncommon.

https://getcomposer.org/doc/articles/troubleshooting.md#xdebug-impact-on-composer