php - una - metodo para componer musica
ActualizaciĆ³n lenta de dependencias de compositores, a pesar de--prefer-dist flag (8)
Comprueba si están instalados zip
y unzip
. Si faltan, Composer clonará el repositorio en lugar de descargar una versión comprimida.
¿Por qué demoran hasta dos minutos para que mis dependencias de compositor se actualicen, incluso cuando no ha habido cambios?
Una sugerencia popular es agregar el --prefer-dist
, que he agregado a mi comando:
php composer.phar update --prefer-dist
Pero esto no hace diferencia. Debajo está mi archivo composer.json - ¿He hecho algo tonto?
{
"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:[email protected]/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"
}
}
}
De hecho, xdebug definitivamente va a ralentizar las cosas. Sin embargo, la desinstalación de xdebug no es ideal. Una buena opción es usar HHVM y ponerlo en deber del compositor.
Instalar HHVM es bastante sencillo, y HHVM en sí mismo es mucho más rápido que PHP5. Es un doble-ganar - YMMV, pero obtuve un aumento de casi 5 veces la velocidad (sin duda en el globo ocular) en el uso del compositor que obtendría incluso si xdebug no estuviera en la imagen.
Si está en OS X, este enlace podría ayudar (artículo de blog que escribí sobre el tema):
Estás usando un repositorio privado. Esto no permitirá descargar la versión comprimida de la versión que incluye, pero debe clonar el repositorio. Además, es posible que se deba escanear todo el repositorio para encontrar la versión requerida.
Debería verificar si usar Satis es una opción. De esta forma, podría preparar los archivos ZIP de su propio software y descargarlos como lo hizo con Github (que tiene una API para esto que Composer usa para permitir la descarga de archivos ZIP, incluso si no están preparados explícitamente).
Estaba teniendo este problema al ejecutar Symfony2 en una máquina virtual que tenía poca memoria. Aumenté la memoria de la máquina y mejoró drásticamente. Puede verificar la memoria en su sistema y ver si se puede actualizar.
Este problema a menudo está relacionado con xdebug
lodaed (no importa si está habilitado o no) en su entorno de CLI.
Puede verificar si xdebug está habilitado para CLI usando:
// unix
php -m | grep xdebug
// windows
php -m | findstr xdebug
Se puede obtener más información acerca de qué operaciones tardan tanto si se habilita la información máxima de verbosidad y perfil:
composer install --prefer-dist -vvv --profile
o
composer update --prefer-dist -vvv --profile
Factores que pueden retrasar Composer:
Como se señaló,
xdebug
puede afectar el rendimiento de Composer. Ejecutar elcomposer diagnose
también te avisará sobre esto.Ejecución de
update
lugar deinstall
. La gente con frecuencia simplemente ejecuta laupdate
constantemente. Esto hace que Composer realice todo el proceso de resolución de dependencias, independientemente de si algo ha cambiado o no. Cuando ejecuta lainstall
, Composer toma los requisitos directamente de su archivo .lock, omitiendo el proceso de resolución de la dependencia. Solo debe ejecutar laupdate
durante el ciclo de vida de desarrollo de su aplicación. Y aun así, no es algo que deba ejecutar a diario por lo general.Si tiene una dependencia específica que actualiza con frecuencia usted mismo, puede intentar simplificar el proceso ejecutando el
composer update vendor/package --with-dependencies
lugar.Estableciendo
minimum-stability
adev
. Esto amplía en gran medida la cantidad de posibilidades que el resolvedor de dependencias debe tener en cuenta. Casi nunca deberías bajar laminimum-stability
adev
menos que no tengas otra opción. Mire alternativas, como el uso temporal de una bandera@dev
línea.
Parece que el problema fue resuelto, pero esto podría ayudar a alguien.
Cada vez que ejecuté la instalación o actualización del compositor, tardé más de 10 segundos en buscar el archivo https://packagist.org/packages.json . Eventualmente descubrí que el problema estaba relacionado con IPv6, ya que la búsqueda de archivos de sitios IPv4 tomó menos de un segundo.
El problema es que mi ISP no es compatible con IPv6, pero lo tenía habilitado en mis propiedades de ethernet. Después de haber deshabilitado Internet Protocol Version 6 (TCP/IPv6)
en mi configuración de red, las velocidades de instalación / actualización mejoraron drásticamente (disminuyeron de 200+ segundos a 10 similares)
Tuve el mismo problema con la composer update
, actualicé el propio compositor a la última versión utilizando la composer selfupdate
y ahora es la velocidad aceptable.