2016-03-11 5 views
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 с этой ошибкой (из памяти). Если I заставляет перестроить достаточное количество раз, оно в конечном итоге проходит, поэтому, очевидно, это не проблема с проектом, а с помощью трейвиса или композитора или комбинации (или Symfony, я полагаю). Он ТОЛЬКО терпит неудачу при попытке загрузить Symfony. Похоже, что проблема будет широко распространена, но я ничего не могу найти на SO или проблемах в GH.Трэвиса + композитор неоднократно сбиваться при загрузке Symfony 2.8.3

Есть ли у кого-нибудь предложения по устранению проблемы?

log from failed build

composer.json file

.travis.yml file

+0

Вы должны использовать 'композитор install' вместо' update' так, что он просто загружает то, что перечислены в файле блокировки, а не пытаться увидеть, если что-то было обновлено на всех. – qooplmao

+0

Почему это повлияет на эту проблему (из памяти)? – craigh

+0

Я попробовал. вы можете увидеть здесь: https://travis-ci.org/zikula/core/builds/115512447 - результаты хорошие. Он работает (yay) и строит намного быстрее (double-yay), но я не понимаю (boo!) ;-) Может быть, вы можете объяснить, почему? – craigh

ответ

6

Вместо этого composer update Вы должны позвонить composer install -o (с оптимизированным автозагрузчиком) на ваш сервер CI.

Запуск композитор установить волю:

  • Проверьте, если файл существует composer.lock
  • Если нет, то выполнить обновление композитора для создания composer.lock
  • Если composer.lock существует, установить указанные версии из файла блокировки

обновление Running композитор будет:

  • Проверить composer.json
  • Определите последние версии для установки на основе вашей версии спецификации - время и потребление памяти задачи
  • Установка последних версий
  • Update 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

+0

Благодарим вас за очень полное объяснение. – craigh

1

я испытал те же проблемы, обходной путь я должен был добавить следующее в before_install:

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

Исходя из this issue на Трэвиса. В бесплатном плане travis предлагает 3 ГБ памяти и доступно до 2 ядер