Медленное обновление зависимостей композитора, несмотря на флаг -prefer-dist

Почему для моих зависимостей композитора требуется до двух минут, даже если не было никаких изменений?

Ответ с высоким приоритетом предполагает добавление --prefer-dist , который я добавил к моей команде:

 php composer.phar update --prefer-dist 

Но это не имеет значения. Ниже мой файл composer.json – я сделал что-то глупое?

 { "name": "my-namespace/symfony", "type": "project", "description": "", "require": { "php": ">=5.3.3", "symfony/symfony": "2.3.*", "doctrine/orm": ">=2.2.3,<2.4-dev", "doctrine/doctrine-bundle": "1.2.*", "twig/extensions": "1.0.*", "symfony/assetic-bundle": "2.3.*", "symfony/monolog-bundle": "2.3.*", "sensio/framework-extra-bundle": "2.3.*", "sensio/generator-bundle": "2.3.*", "sensio/distribution-bundle": "2.2.*", "my-namespace/my-bundle": "1.0.*" }, "repositories": [ { "type": "vcs", "url": "http://username:password@git.com/my-bundle.git" } ], "scripts": { "post-install-cmd": [ "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap", "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache", "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets", "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile" ], "post-update-cmd": [ "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap", "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache", "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets", "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile" ] }, "config": { "bin-dir": "bin" }, "minimum-stability": "dev", "extra": { "symfony-app-dir": "app", "symfony-web-dir": "web", "branch-alias": { "dev-master": "2.3-dev" } } } 

Solutions Collecting From Web of "Медленное обновление зависимостей композитора, несмотря на флаг -prefer-dist"

Эта проблема часто связана с xdebug lodaed (неважно, включено или нет) в вашей среде CLI.

Вы можете проверить, что xdebug включен для CLI, используя:

 // unix php -m | grep xdebug // windows php -m | findstr xdebug 

Дополнительная информация о том, какие операции занимают так много времени, может быть достигнута за счет предоставления максимальной детализации и профилирующей информации:

 composer install --prefer-dist -vvv --profile 

или

 composer update --prefer-dist -vvv --profile 

Факторы, которые могут замедлить Композитор:

  • Как указано, xdebug может повлиять на производительность Composer. Запуск composer diagnose также предупредит вас об этом.

  • Запуск update вместо install . Люди слишком часто просто запускают update постоянно. Это заставляет Composer пройти весь процесс разрешения зависимостей, независимо от того, изменилось или нет. Когда вы запускаете install , Composer берет требования непосредственно из вашего .lock-файла, пропуская процесс разрешения зависимостей. Вы должны запускать update только в течение жизненного цикла разработки вашего приложения. И даже тогда, это не то, что вы обычно должны выполнять ежедневно.

  • Если у вас есть определенная зависимость, которую вы часто обновляете самостоятельно, вы можете попытаться упростить процесс, вместо этого вместо запуска composer update vendor/package --with-dependencies .

  • Установка minimum-stability для dev . Это значительно расширяет объем возможностей, которые должен учитывать распознаватель зависимостей. Вы почти никогда не должны понижать minimum-stability до dev если у вас нет другого выбора. Изучите альтернативы, например, временно используя встроенный флаг @dev .

Похоже, проблема решена, но это может помочь кому-то.

Всякий раз, когда я запускал установку или обновление композитора, потребовалось больше 10 секунд, чтобы получить файл https://packagist.org/packages.json . В конце концов я узнал, что проблема связана с IPv6, поскольку выборка файлов с сайтов IPv4 заняла менее секунды.
Проблема в том, что мой интернет-провайдер не поддерживает IPv6, но я включил его в свои свойства ethernet. После того, как я отключил Internet Protocol Version 6 (TCP/IPv6) в своих сетевых настройках, скорость установки / обновления значительно улучшилась (от 200+ секунд до 10)

Вы используете частный репозиторий. Это не позволит загрузить сжатую версию версии, которую вы включаете, но должна клонировать репозиторий. Кроме того, возможно, что весь репозиторий должен быть отсканирован, чтобы найти нужную версию.

Вы должны проверить, является ли использование Satis опцией. Таким образом, вы можете создавать ZIP-файлы своего собственного программного обеспечения и загружать его так же, как и вещи, размещенные в Github (у которого есть API для этого, который используется Composer для загрузки ZIP-файлов, даже если они явно не подготовлены).

У меня была эта проблема во время работы Symfony2 на виртуальной машине с низкой памятью. Я увеличил память машины, и она значительно улучшилась. Вы можете проверить память в своей системе и посмотреть, можно ли ее обновить.

Действительно, xdebug, безусловно, замедлит работу. Однако удаление xdebug не является идеальным. Хорошим вариантом является использование HHVM и включение его в обязанности композитора.

Установка HHVM довольно безболезненна, и сам HHVM намного быстрее, чем PHP5. Это двойная победа – YMMV, но я получил почти 5-кратное увеличение скорости (на диване с явным глазом) в использовании композитора, которое я получил бы, даже если xdebug не был на картинке.

Если вы находитесь на OS X, то эта ссылка может помочь (статья в блоге, которую я написал по этому вопросу):

http://circlical.com/blog/2015/11/11/slow-composer-on-os-x