Почему PHP Composer такой медленный, когда все, что я делаю, это запускаю проект с нулевыми зависимостями? Вот какие команды я запускаю:
composer init
<пройти через создание composer.json, определить 0 нулевых зависимостей>
composer install
Подождите 3 минуты (не преувеличение).
Все, что нужно сделать композитору, - это включить автозагрузчик и создать /vendor
, так почему же это занимает так много времени? В этом отношении, почему этого не происходит composer init
?
Есть ли вариант конфигурации, который я могу использовать для извлечения кэшированного автозагрузчика и поставщика init
?
php
composer-php
AgmLauncher
источник
источник
compose install
более 5 минут назад, но еще не закончил.Composer version 1.0-dev (07c644ac229a21df80180598d8bb9aaba232eecb) 2015-02-03 12:51:10
. Возможно, это не самая последняя версия, но все же новее, чем ваш мэйнфрейм IBM ;-)composer self-update
Ответы:
Также отключите Xdebug . Xdebug может заставить Composer занять несколько минут даже при запуске такой простой команды, как
composer --version
.источник
Поскольку Composer реализован
file_get_contents()
. В нем нет оптимизации TCP, Keep-Alive, мультиплексирования и т. Д.Я создал плагин Composer для параллельной загрузки пакетов: https://packagist.org/packages/hirak/prestissimo
Пожалуйста, попробуйте. В моей среде
composer install
становится в 10 раз быстрее.источник
composer global require "squizlabs/php_codesniffer=*" -vvv
composer config --global repo.packagist composer https://packagist.org
источник
composer config --global repo.packagist composer https://packagist.org
что это было! Потрясающие! 🏆Тут то же самое. Получите более подробную информацию с помощью "composer install --profile -vvv". В моем случае загрузка нескольких файлов JSON занимает много времени. Они кэшируются на моем сервере, но все равно загружаются при каждом вызове обновления / установки Composer.
... 30 минут спустя ...
Похоже, какая-то проблема с производительностью @ packagist.org. Теперь установка Composer выполняется за 2 секунды! И загруженные файлы JSON правильно кэшируются.
источник
Я столкнулся с этой проблемой, и это вызывало у меня кривую, поскольку у меня нигде на моем компьютере не установлен Xdebug. Оказывается, это были сбои в режиме адресации IPv6 . Итак, чтобы проверить, я побежал
curl --ipv4 'https://packagist.org/packages.json' curl --ipv6 'https://packagist.org/packages.json'
IPv4 прошел, но IPv6 не прошел. В конце концов, вы должны выяснить, почему ваш сетевой стек не поддерживает его, но в моем случае я решил просто отдать предпочтение трафику IPv4, пока не смогу решить эту проблему. В CentOS я создал / изменил файл /etc/gai.conf и добавил следующее:
label ::1/128 0 label ::/0 1 label 2002::/16 2 label ::/96 3 label ::ffff:0:0/96 4 precedence ::1/128 50 precedence ::/0 40 precedence 2002::/16 30 precedence ::/96 20 precedence ::ffff:0:0/96 100
В Ubuntu вы также можете отредактировать этот файл и раскомментировать строку
precedence ::ffff:0:0/96 100
Источник на Rackspace Community Hub
источник
На Ubuntu Xenial 16.04 VPS вам необходимо сделать следующее:
sudo sh -c "echo 'precedence ::ffff:0:0/96 100' >> /etc/gai.conf" composer global require hirak/prestissimo
Он настраивает IPv4 как предпочтительный по сравнению с IPv6.
/server/93717/setting-ipv4-as-preferred-protocol-over-ipv6
источник
В моем случае версия композитора, которую я использовал задним числом. После обновления самой версии композитора проблема исчезла.
Чтобы обновить версию композитора, запустите
composer self-update
а затем потребуйте пакет композитора, и все готово.
composer require "<package-name>"
источник
permission
проблема, то это предубеждение.Если какой-либо из предыдущих ответов не работает, проверьте, разрешает ли ваш брандмауэр TCP_OUT на порту 9418.
Мой брандмауэр был слишком строгим. Из-за этого Composer работал так долго, что у меня никогда не было тайм-аута или индикации, что порт заблокирован.
источник
Мой был медленным при загрузке файлов json из-за антивируса. Некоторые антивирусы сканируют весь веб-трафик и могут медленно анализировать файлы json. Попробуйте отключить AV во время работы composer.
источник
Изменить: Заключение: здесь нет решения или вообще не кажется пуленепробиваемым. Что в конечном счете помогает обычно с помощью композитора постепенно, требуя или удаления только один пакет в то время , используя
composer require
,composer remove
команду, также касается добавления каких - либо «конкретные без зависимости» настройки, любая библиотека может добавлять / удалять ради него корректировки / обновление конфигурации кеша блокировки composer.json.Группирую свой опыт с ответами отсюда и из связанного вопроса.
До сих пор я пробовал каждое решение, упомянутое в этом вопросе. Однако это все еще не помогло мне, хотя я пытался / заметил, что установка любой другой отдельной библиотеки была довольно быстрой, поэтому я продолжал исследовать библиотеки одну за другой, что могло вызвать узкое место.
1) ДА И я обнаружил, что это кодирование,
"codeception/codeception": "2.4.0",
В одиночку это заняло почти 200 секунд, хотя иногда казалось, что запуск его вместе с другими библиотеками занимает почти 12 минут. Кроме того, composer, похоже, не отражает в реальном времени, когда после запуска в течение 20 секунд он выводит его запуск 0,35 секунды и так далее.
[374.9MiB/173.14s] 39/45: https://codeload.github.com/sebastianbergmann/php-text-template/legacy.zip/31f8b717e51d9a2afca6c9f046f5d69fc27c8686 [374.9MiB/173.16s] 40/45: https://codeload.github.com/sebastianbergmann/diff/legacy.zip/720fcc7e9b5cf384ea68d9d930d480907a0c1a29 [374.9MiB/173.17s] 41/45: https://codeload.github.com/sebastianbergmann/exporter/legacy.zip/68609e1261d215ea5b21b7987539cbfbe156ec3e [374.9MiB/173.19s] 42/45: https://codeload.github.com/sebastianbergmann/phpunit-mock-objects/legacy.zip/f9756fd4f43f014cb2dca98deeaaa8ce5500a36e [374.9MiB/173.20s] 43/45: https://codeload.github.com/sebastianbergmann/recursion-context/legacy.zip/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8 [374.9MiB/173.23s] 44/45: https://codeload.github.com/sebastianbergmann/php-code-coverage/legacy.zip/4cab20a326d14de7575a8e235c70d879b569a57a [374.9MiB/173.24s] 45/45: https://codeload.github.com/doctrine/instantiator/legacy.zip/ae466f726242e637cebdd526a7d991b9433bacf1 [374.9MiB/173.24s] Finished: success: 45, skipped: 0, failure: 0, total: 45 [374.8MiB/173.25s] Analyzed 6622 packages to resolve dependencies [374.8MiB/173.25s] Analyzed 435842 rules to resolve dependencies [374.8MiB/173.25s] Package operations: 54 installs, 0 updates, 0 removals [374.8MiB/173.26s] Installs: sebastian/recursion-context:3.0.0, sebastian/exporter:3.1.2, doctrine/instantiator:1.3.0, phpunit/php-text-template:1.2.1, phpunit/phpunit-mock-objects:6.1.2, codeception/stub:1.0.4, sebastian/diff:3.0.2, sebastian/comparator:3.0.2, theseer/tokenizer:1.1.3, sebastian/version:2.0.1, sebastian/environment:3.1.0, sebastian/code-unit-reverse-lookup:1.0.1, phpunit/php-token-stream:3.1.1, phpunit/php-file-iterator:1.4.5, phpunit/php-code-coverage:6.0.5, sebastian/object-reflector:1.1.1, sebastian/object-enumerator:3.0.3, sebastian/global-state:2.0.0, phpunit/php-timer:2.1.2, symfony/polyfill-ctype:v1.17.0, webmozart/assert:1.8.0, phpdocumentor/reflection-common:2.1.0, phpdocumentor/type-resolver:1.1.0, phpdocumentor/reflection-docblock:5.1.0, phpspec/prophecy:v1.10.3, myclabs/deep-copy:1.9.5, sebastian/resource-operations:1.0.0, phar-io/version:1.0.1, phar-io/manifest:1.0.1, phpunit/phpunit:7.1.5, codeception/phpunit-wrapper:7.6.1, symfony/yaml:v4.4.8, behat/gherkin:v4.6.2, symfony/polyfill-mbstring:v1.17.0, symfony/dom-crawler:v4.4.8, symfony/css-selector:v4.4.8, symfony/browser-kit:v4.4.8, symfony/event-dispatcher-contracts:v1.1.7, psr/container:1.0.0, symfony/event-dispatcher:v4.4.8, symfony/service-contracts:v2.0.1, symfony/polyfill-php73:v1.17.0, symfony/console:v4.4.8, symfony/finder:v4.4.8, ralouphie/getallheaders:3.0.3, psr/http-message:1.0.1, guzzlehttp/psr7:1.6.1, guzzlehttp/promises:v1.3.1, symfony/polyfill-php72:v1.17.0, symfony/polyfill-intl-idn:v1.17.0, guzzlehttp/guzzle:6.5.3, symfony/process:v4.4.8, facebook/webdriver:1.7.1, codeception/codeception:2.4.0 [374.8MiB/173.28s] - Installing sebastian/recursion-context (3.0.0): [374.9MiB/173.28s] Loading from cache[374.9MiB/173.28s] [374.9MiB/173.28s] Extracting archive[374.9MiB/173.51s] - Installing sebastian/exporter (3.1.2): [374.9MiB/173.52s] Loading from cache[374.9MiB/173.52s] [374.9MiB/173.52s] Extracting archive[374.9MiB/173.75s] - Installing doctrine/instantiator (1.3.0): [374.9MiB/173.76s] Loading from cache[374.9MiB/173.76s] [374.9MiB/173.76s] Extracting archive[374.9MiB/174.00s] - Installing phpunit/php-text-template (1.2.1): [374.9MiB/174.00s] Loading from cache[374.9MiB/174.00s] [374.9MiB/174.00s] Extracting archive[374.9MiB/174.23s] - Installing phpunit/phpunit-mock-objects (6.1.2): [374.9MiB/174.23s] Loading from cache[374.9MiB/174.23s] [374.9MiB/174.23s] Extracting archive[374.9MiB/174.55s] - Installing codeception/stub (1.0.4): [374.9MiB/174.56s] Loading from cache[374.9MiB/174.56s] [374.9MiB/174.56s] Extracting archive[374.9MiB/174.80s] - Installing sebastian/diff (3.0.2): [374.9MiB/174.80s] Loading from cache[374.9MiB/174.80s] [374.9MiB/174.80s] Extracting archive[374.9MiB/175.07s] - Installing sebastian/comparator (3.0.2): [374.9MiB/175.07s] Loading from cache[374.9MiB/175.07s] [374.9MiB/175.07s] Extracting archive[374.9MiB/175.33s] - Installing theseer/tokenizer (1.1.3): [374.9MiB/175.33s] Loading from cache[374.9MiB/175.33s]
Бег до
Problem 1 - Installation request for codeception/codeception 2.4.0 -> satisfiable by codeception/codeception[2.4.0]. - Conclusion: remove symfony/finder v5.0.8 - Conclusion: don't install symfony/finder v5.0.8 - codeception/codeception 2.4.0 requires symfony/finder >=2.7 <5.0 -> satisfiable by symfony/finder[v2.7.0, v2.7.1, v2.7.10, v2.7.11, v2.7.12, v2.7.13, v2.7.14, v2.7.15, v2.7.16, v2.7.17, v2.7.18, v2.7.19, v2.7.2, v2.7.20, v2.7.21, v2.7.22, v2.7.23, v2.7.24, v2.7.25, v2.7.26, v2.7.27, v2.7.28, v2.7.29, v2.7.3, v2.7.30, v2.7.31, v2.7.32, v2.7.33, v2.7.34, v2.7.35, v2.7.36, v2.7.37, v2.7.38, v2.7.39, v2.7.4, v2.7.40, v2.7.41, v2.7.42, v2.7.43, v2.7.44, v2.7.45, v2.7.46, v2.7.47, v2.7.48, v2.7.49, v2.7.5, v2.7.50, v2.7.51, v2.7.6, v2.7.7, v2.7.8, v2.7.9, v2.8.0, v2.8.1, v2.8.10, v2.8.11, v2.8.12, v2.8.13, v2.8.14, v2.8.15, v2.8.16, v2.8.17, v2.8.18, v2.8.19, v2.8.2, v2.8.20, v2.8.21, v2.8.22, v2.8.23, v2.8.24, v2.8.25, v2.8.26, v2.8.27, v2.8.28, v2.8.29, v2.8.3, v2.8.30, v2.8.31, v2.8.32, v2.8.33, v2.8.34, v2.8.35, v2.8.36, v2.8.37, v2.8.38, v2.8.39, v2.8.4, v2.8.40, v2.8.41, v2.8.42, v2.8.43, v2.8.44, v2.8.45, v2.8.46, v2.8.47, v2.8.48, v2.8.49, v2.8.5, v2.8.50, v2.8.52, v2.8.6, v2.8.7, v2.8.8, v2.8.9, v3.0.0, v3.0.1, v3.0.2, v3.0.3, v3.0.4, v3.0.5, v3.0.6, v3.0.7, v3.0.8, v3.0.9, v3.1.0, v3.1.1, v3.1.10, v3.1.2, v3.1.3, v3.1.4, v3.1.5, v3.1.6, v3.1.7, v3.1.8, v3.1.9, v3.2.0, v3.2.1, v3.2.10, v3.2.11, v3.2.12, v3.2.13, v3.2.14, v3.2.2, v3.2.3, v3.2.4, v3.2.5, v3.2.6, v3.2.7, v3.2.8, v3.2.9, v3.3.0, v3.3.1, v3.3.10, v3.3.11, v3.3.12, v3.3.13, v3.3.14, v3.3.15, v3.3.16, v3.3.17, v3.3.18, v3.3.2, v3.3.3, v3.3.4, v3.3.5, v3.3.6, v3.3.7, v3.3.8, v3.3.9, v3.4.0, v3.4.1, v3.4.10, v3.4.11, v3.4.12, v3.4.13, v3.4.14, v3.4.15, v3.4.16, v3.4.17, v3.4.18, v3.4.19, v3.4.2, v3.4.20, v3.4.21, v3.4.22, v3.4.23, v3.4.24, v3.4.25, v3.4.26, v3.4.27, v3.4.28, v3.4.29, v3.4.3, v3.4.30, v3.4.31, v3.4.32, v3.4.33, v3.4.34, v3.4.35, v3.4.36, v3.4.37, v3.4.38, v3.4.39, v3.4.4, v3.4.40, v3.4.5, v3.4.6, v3.4.7, v3.4.8, v3.4.9, v4.0.0, v4.0.1, v4.0.10, v4.0.11, v4.0.12, v4.0.13, v4.0.14, v4.0.15, v4.0.2, v4.0.3, v4.0.4, v4.0.5, v4.0.6, v4.0.7, v4.0.8, v4.0.9, v4.1.0, v4.1.1, v4.1.10, v4.1.11, v4.1.12, v4.1.2, v4.1.3, v4.1.4, v4.1.5, v4.1.6, v4.1.7, v4.1.8, v4.1.9, v4.2.0, v4.2.1, v4.2.10, v4.2.11, v4.2.12, v4.2.2, v4.2.3, v4.2.4, v4.2.5, v4.2.6, v4.2.7, v4.2.8, v4.2.9, v4.3.0, v4.3.1, v4.3.10, v4.3.11, v4.3.2, v4.3.3, v4.3.4, v4.3.5, v4.3.6, v4.3.7, v4.3.8, v4.3.9, v4.4.0, v4.4.1, v4.4.2, v4.4.3, v4.4.4, v4.4.5, v4.4.6, v4.4.7, v4.4.8]. - Can only install one of: symfony/finder[v2.7.0, v5.0.8]. - Can only install one of: symfony/finder[v2.7.1, v5.0.8]. - Can only install one of: symfony/finder[v2.7.10, v5.0.8]. - Can only install one of: symfony/finder[v2.7.11, v5.0.8].
2) ДА Кстати, prestissimo, как я уже упоминал, уже применялся и, похоже, помог, так как на другом очень быстром компьютере, который имеет гораздо более быстрый интернет вообще без кодирования, установка заняла в 5 раз больше, 518 секунд, хотя, возможно, из-за prestissimo или других советов здесь это заняло 110 секунд.
composer global require hirak/prestissimo
3) ДА Windows работает медленно, как и виртуализированные папки от Windows до Linux. Запуск за пределами общей папки внутри Linux, похоже, ускорил его примерно вдвое. Хотя могло быть из-за кеша.
4) НЕТ
"process-timeout": 1800,
предназначен для одного процесса, такого как git checkout, и, похоже, не помог вообще, даже если он установлен на 10, поскольку он уже был значительно большим. Возможно, это поможет только при полном отключении какой-либо службы.
5) ДА, установка с удаленной или пустой папкой поставщика = свежее выглядит значительно быстрее (около 1 минуты и более), чем добавление в файлы поставщика и другие существующие в ней пакеты
6) ДА кажется медленнее на Ubuntu18 apache2 без собственного образа xdebug, чем на Debian10 php-fpm даже с xdebug в Yii2-starter-kit, по какой-то причине примерно вдвое медленнее,
cat /etc/*-release
чтобы узнать дистрибутив Linux7) НЕТ,
php -ddefault_socket_timeout=1 /usr/local/bin/composer --verbose --profile install
упомянутое здесь, похоже, не помогло Медленное обновление зависимостей композитора, несмотря на флаг --prefer-dist и не упомянутый протокол IP v6 v v4, хотя это могло быть связано с кешем.8) НЕТ Установка zip, похоже, не помогает, при установке PHP был предустановлен zip, он по-прежнему жаловался, что его не было, пока не были установлены как пакеты Linux, но это замедлило процесс за одну симуляцию на 100 секунд с 650 до 750 секунд. Те же условия окружающей среды.
As there is no 'unzip' command installed zip files are being unpacked using the PHP zip extension
https://stackoverflow.com/a/51208804/3419535 тестирование в условиях без кеширования--no-cache
9) ДА удалить
"minimum-stability ": "dev",
10) ДА, используйте Prefer-dist
composer require robmorgan/phinx:@dev --prefer-dist -vvv --profile
(используя команду require в качестве примера, поскольку использование частичных команд require, как упомянуто в самом начале выше, вместо полной установки с помощью команды install, кажется одним из самых значительных ускорений, плюс требуется @ dev- как и в предыдущих пунктах, когдаminimum-stability: dev
не применяется в целом ко всем зависимостям, кажется безвредным, используя для каждого случая (зависимости) основе)источник
шаг 1
$ composer self-update
шаг 2
шаг 3
источник
Лучший способ узнать это - запустить обновление / установку композитора с подробным описанием. композитор {установить / обновить} -vvv. Использование флага -h может помочь вам в будущем
источник
В случае, если вы удалили файл composer.lock, а затем ушли,
composer install
он становится слишком медленным для загрузки зависимостей. В этом случае используйтеcomposer update
команду, и тогда она может помочь вам или другим.источник