Composer зависает при разрешении зависимостей через SAT на 4.2

Что я пробовал:

  • Удаление всего, кроме Laravel (версия 4.2.*). Это завершается, но все еще зависает примерно на 5 минут.
  • Обновление композитора
  • Удаление /поставщик
  • Выполнение чистой установки Laravel 4.2 (висит около 3 минут)
  • Выполнение чистой установки Laravel 5 (совсем не зависает)
  • Полное отключение xdebug (похоже, не имеет значения)

Со всеми моими пакетами я видел завершенный композитор, но только тогда, когда я оставил его работать на ночь. Я вообще не могу развернуть кузницу, потому что время ожидания истекло! Это начало происходить только недели две назад.


person Sabrina Leggett    schedule 14.06.2016    source источник
comment
Turning off xdebug completely (doesn't seem to make a difference) – это должно иметь огромное значение, особенно на машинах без твердотельного накопителя или высокопроизводительного чипа Intel, или и того, и другого. Вы уверены, что он выключен? Я видел эту проблему раньше на другой машине разработки моего коллеги, где композитору потребовались бы часы, чтобы сделать простое обновление. Проблема оказалась в поврежденной установке композитора. Очистка системы от артефактов композитора и переустановка сработали отлично.   -  person Ohgodwhy    schedule 14.06.2016
comment
ОК, да, это имело большое значение (отключил его в неправильном php.ini), но он все еще достаточно медленный, чтобы тайм-аут моего кузнечного сервера. Суть в том, что когда что-то уходит от 10 минут до 10 часов (даже с включенным xdebug), происходит что-то большее.   -  person Sabrina Leggett    schedule 24.06.2016
comment
Я ни в чем с тобой не согласен. Я думаю, что здесь происходят другие вещи, возможно, проблема с разрешением DNS или проблема с брандмауэром. Можете ли вы strace /usr/bin/composer посмотреть, что происходит во время выполнения composer update? sidenote strace будет выбрасывать МНОГО всего, так что это своего рода иголка в стоге сена, но она определенно полезна. Однако может быть что-то лучше для отладки этого. Я также нашел совет для composer config --global repo.packagist composer https://packagist.org, который требует настройки для использования HTTPS и, похоже, решил проблему для других.   -  person Ohgodwhy    schedule 24.06.2016
comment
Это происходит во всех наших средах разработки, даже при совершенно новой установке 4.2. Я почти уверен, что это связано с зависимостями Laravel 4.2, потому что 5.2 на данный момент вообще не зависает. И я переключаюсь на https раньше, пытаясь отладить, возможно, это помогло, но тесты с этим уже сделаны.   -  person Sabrina Leggett    schedule 27.06.2016
comment
Могу ли я увидеть ваш composer.json, чтобы попытаться установить его локально? Мы поддерживаем стеки 4.2 LTS и не имеем этой проблемы.   -  person Ohgodwhy    schedule 27.06.2016
comment
jsfiddle.net/n10tvgcw   -  person Sabrina Leggett    schedule 28.06.2016
comment
То же самое происходит с 4.2.* и 4.2. И они завершаются. Я могу только сказать, что они зависают на минуту или две при разрешении зависимостей через SAT, где 5 вообще нет. И ничто из того, что мы сделали, не вызвало этого, поэтому я просто должен думать, что что-то было обновлено с зависимостью, которая не подходит для других пакетов...   -  person Sabrina Leggett    schedule 28.06.2016
comment
@SabrinaGelbart ты нашел решение этой проблемы? я тоже схожу с ума от медлительности композитора.   -  person Luis Lopes    schedule 15.12.2016
comment
Да, своего рода - 1) если вы еще этого не сделали, вы можете запустить «обновление композитора» на одной машине, а затем зафиксировать файл блокировки, а затем запустить «установку композитора» на каждой другой машине 2) объявить версии как можно более явно.   -  person Sabrina Leggett    schedule 15.12.2016


Ответы (1)


Для всех, кто ищет ответ... вот что помогло повысить производительность:

  1. Commit composer.lock: если вы еще этого не делаете, вы можете запустить «обновление композитора» на одном компьютере, а затем зафиксировать файл блокировки, а затем запустить «установку композитора» на каждом другом компьютере. Это спасло наш процесс развертывания!
  2. Как правило, объявляйте версии как можно более явно.

и/или

  1. обновите свою версию Laravel!
person Sabrina Leggett    schedule 27.02.2017
comment
На самом деле не решил проблему, но заставил меня вспомнить о файле composer.lock, который я только удалил, и проблема была решена. - person emerino; 28.07.2017