¿Por qué PHP Composer es tan lento cuando todo lo que hago es iniciar un proyecto sin dependencias? Estos son los comandos que ejecuto:
composer init
<paso a través de la creación de composer.json, define 0 cero dependencias>
composer install
Espere 3 minutos (no es una exageración).
Todo lo que tiene que hacer el compositor es introducir un autocargador y crear /vendor
, entonces, ¿por qué tarda tanto? De hecho, ¿por qué no sucede ese paso composer init
?
¿Existe una opción de configuración que pueda usar para incorporar un cargador automático en caché y un proveedor init
?
php
composer-php
AgmLauncher
fuente
fuente
compose install
más de 5 minutos y aún no se completó.Composer version 1.0-dev (07c644ac229a21df80180598d8bb9aaba232eecb) 2015-02-03 12:51:10
. Tal vez no sea la versión más reciente, pero aún más nueva que su mainframe IBM ;-)composer self-update
Respuestas:
Además, desactive Xdebug . Xdebug puede hacer que Composer tarde unos minutos incluso cuando se ejecuta un comando tan simple como
composer --version
.fuente
Porque Composer es implementado por
file_get_contents()
. Eso no tiene optimizaciones de TCP, ni Keep-Alive, ni multiplexación, etc.Creé un complemento de Composer para descargar paquetes en paralelo: https://packagist.org/packages/hirak/prestissimo
Por favor pruebalo. En mi entorno, se
composer install
vuelve 10 veces más rápido.fuente
composer global require "squizlabs/php_codesniffer=*" -vvv
composer config --global repo.packagist composer https://packagist.org
fuente
composer config --global repo.packagist composer https://packagist.org
¡qué fue eso! ¡Increíble! 🏆Lo mismo aquí. Obtenga más detalles con "Composer install --profile -vvv". En mi caso, lleva mucho tiempo descargar algunos archivos JSON. Se almacenan en caché en mi servidor, pero aún se descargan con cada llamada de actualización / instalación de Composer.
... 30 minutos después ...
Parece un problema de rendimiento @ packagist.org. ¡Ahora la instalación de Composer se ejecuta en 2 segundos! Y los archivos JSON descargados se almacenan en caché correctamente.
fuente
Me estaba encontrando con este problema y me estaba volviendo loco ya que no tengo Xdebug instalado en ninguna parte de mi máquina. Resulta que fueron fallas en el modo de direccionamiento IPv6 . Así que para probar corrí
curl --ipv4 'https://packagist.org/packages.json' curl --ipv6 'https://packagist.org/packages.json'
IPv4 pasó, pero falló IPv6. Al final, debería buscar para averiguar por qué su pila de red no lo admite, pero en mi caso, decidí dar preferencia al tráfico IPv4 hasta que pueda resolver eso. En CentOS creé / modifiqué el archivo /etc/gai.conf y puse lo siguiente:
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
En Ubuntu también puede editar ese archivo y descomentar la línea
precedence ::ffff:0:0/96 100
Fuente en Rackspace Community Hub
fuente
En Ubuntu Xenial 16.04 VPS, debe hacer lo siguiente:
sudo sh -c "echo 'precedence ::ffff:0:0/96 100' >> /etc/gai.conf" composer global require hirak/prestissimo
Configura IPv4 como preferido sobre IPv6.
/server/93717/setting-ipv4-as-preferred-protocol-over-ipv6
fuente
En mi caso, la versión del compositor que estaba ejecutando estaba retroactiva. Después de actualizar la versión del compositor, el problema desapareció.
Para actualizar la versión del compositor, ejecute
composer self-update
y luego requiere el paquete composer y listo.
composer require "<package-name>"
fuente
permission
problema es prejuicio.Si alguna de las respuestas anteriores no funciona, verifique si su firewall permite TCP_OUT en el puerto 9418.
La seguridad de mi firewall era demasiado nítida. Esto hizo que Composer tardara tanto que nunca obtuve ningún tiempo de espera o indicación de que el puerto estaba bloqueado.
fuente
El mío fue lento al descargar archivos json debido al antivirus. Algunos antivirus escanean todo el tráfico web y pueden ser lentos al analizar los archivos json. Intente deshabilitar su AV mientras ejecuta composer.
fuente
Editar: Conclusión: no se enumera ninguna solución aquí o, en general, parece ser a prueba de balas. Lo que en última instancia ayuda es usar composer de forma incremental, requiriendo o eliminando solo un paquete a la vez usando
composer require
,composer remove
comandos, también se refiere a la adición de cualquier ajuste de "no-dependencia específica", cualquier biblioteca puede ser añadido / retirado por el bien de ella de actualización / actualizar la configuración de la caché de bloqueo composer.json.Agrupando mi experiencia con respuestas de aquí y del enlace en cuestión.
Antes probé todas las soluciones mencionadas en esta pregunta hasta este momento. Sin embargo, todavía no me ayudó, aunque intenté / noté que la instalación de cualquier otra biblioteca individual era considerablemente rápida, así que seguí investigando las bibliotecas una por una que podrían causar el cuello de botella.
1) SÍ Y lo ubiqué como codeception,
"codeception/codeception": "2.4.0",
Solo tardó casi 200 segundos, aunque ejecutarlo junto con otras bibliotecas parecía en ocasiones ejecutar casi 12 minutos. Además, el compositor no parece reflejar en tiempo real cuando, después de iniciar durante 20 segundos, ejecuta 0.35s y así sucesivamente.
[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]
La carrera antes
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) SÍ Por cierto, prestissimo como mencioné ya se aplicó y pareció ayudar, ya que en otra computadora muy rápida que tiene Internet mucho más rápido sin codeception, la instalación tomó 5 veces más, 518 segundos, mientras que quizás debido a prestissimo u otros consejos aquí, tomó 110 segundos.
composer global require hirak/prestissimo
3) SÍ Windows es lento, al igual que las carpetas virtualizadas de Windows a Linux. La ejecución fuera de la carpeta compartida dentro de Linux pareció acelerarlo aproximadamente dos veces. Aunque podría deberse a cache.
4) NO
"process-timeout": 1800,
es por proceso único como git checkout y no pareció ayudar en absoluto, incluso configurado en 10, ya que ya era considerablemente grande. Quizás sea útil solo cuando hay una interrupción total de algún servicio.
5) SÍ instalar con una carpeta de proveedor eliminada o vacía = recientemente parece ser considerablemente más rápido (alrededor de 1 minuto y más) que agregar a los archivos del proveedor y otros paquetes existentes en ella
6) YES parece ser más lento en Ubuntu18 apache2 sin la imagen propia de xdebug, que en Debian10 php-fpm incluso con xdebug en Yii2-starter-kit, por alguna razón aproximadamente dos veces más lento,
cat /etc/*-release
para descubrir la distribución de Linux7) NO
php -ddefault_socket_timeout=1 /usr/local/bin/composer --verbose --profile install
mencionado aquí no pareció ayudar. Actualización lenta de las dependencias del compositor, a pesar del indicador --prefer-dist ni del protocolo IP v6 v v4 mencionado. Aunque podría deberse a la caché.8) NO La instalación de zip no parece ayudar, la instalación de PHP tenía zip preinstalado, todavía se quejaba de no estar allí hasta que se instalaron como paquetes de Linux, pero hizo que el proceso en una sola simulación fuera más lento en 100 segundos de 650 a 750 segundos. Mismas condiciones ambientales.
As there is no 'unzip' command installed zip files are being unpacked using the PHP zip extension
https://stackoverflow.com/a/51208804/3419535 pruebas en condiciones sin caché--no-cache
9) SÍ eliminar
"minimum-stability ": "dev",
10) SÍ use prefer-dist
composer require robmorgan/phinx:@dev --prefer-dist -vvv --profile
(usando un comando require como ejemplo, ya que el uso de comandos require parciales como se mencionó anteriormente, en lugar de una instalación completa a través de un comando de instalación, parece ser una de las aceleraciones más significativas, además de requerir @ dev- como en los puntos anteriores, cuandominimum-stability: dev
no se aplica genéricamente a todas las dependencias, parece ser inofensivo usarlo por caso (dependencia))fuente
paso 1
$ composer self-update
paso 2
paso 3
fuente
La mejor manera de averiguarlo es ejecutar la actualización / instalación del compositor con verbosidad. compositor {instalar / actualizar} -vvv. Usar la bandera -h puede ayudarte en el futuro
fuente
En caso de que haya eliminado su archivo composer.lock y luego lo haya hecho,
composer install
se vuelve demasiado lento para descargar las dependencias. Si este es el caso, use elcomposer update
comando y luego puede ayudarlo a usted oa otros.fuente