web-dev-qa-db-fra.com

Pourquoi la mise à jour des dépendances dans Composer est-elle si lente?

J'utilise composer ( http://getcomposer.org/ ) pour gérer les ensembles installés dans le Symfony2 (symfony v 2.1.3). La version du compositeur est de3188c

Le problème, c'est que lorsque j'ajoute un nouveau paquet dans composer.json et que je l'exécute, le temps d'afficher des messages concernant la mise à jour des dépendances et le téléchargement suivant est très faible. 

J'ai ces données dans le composer.json (voir ci-dessous) et le temps d'exécution est d'environ 20 minutes !!! La connexion Internet est assez rapide, je peux télécharger de gros fichiers très rapidement ...

Y a-t-il une astuce pour le rendre plus rapide?

{
"name": "symfony/framework-standard-edition",
"description": "The \"Symfony Standard Edition\" distribution",
"autoload": {
    "psr-0": { "": "src/" }
},
"require": {
    "php": ">=5.3.3",
    "symfony/symfony": "2.1.*",
    "doctrine/orm": ">=2.2.3,<2.4-dev",
    "doctrine/doctrine-bundle": "1.0.*",
    "twig/extensions": "1.0.*",
    "symfony/assetic-bundle": "2.1.*",
    "symfony/swiftmailer-bundle": "2.1.*",
    "symfony/monolog-bundle": "2.1.*",
    "sensio/distribution-bundle": "2.1.*",
    "sensio/framework-extra-bundle": "2.1.*",
    "sensio/generator-bundle": "2.1.*",
    "jms/security-extra-bundle": "1.2.*",
    "jms/di-extra-bundle": "1.1.*",
    "doctrine/doctrine-fixtures-bundle": "dev-master",
    "webignition/doctrine-migrations-bundle": "dev-master"
},
"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"
    ]
},
"minimum-stability": "dev",
"extra": {
    "symfony-app-dir": "app",
    "symfony-web-dir": "web"
}
67
Myth Rush

Essayez de spécifier une version pour chaque dépendance dans composer.json et utilisez l'option --prefer-dist lors de l'appel de composer. Il téléchargera les fichiers Zip des référentiels (si disponibles) au lieu des fichiers simples.

php composer.phar install --prefer-dist
76
Roberto

Depuis que vous avez accepté une réponse, il semble que cela ait résolu votre problème. Au cas où quelqu'un tomberait sur cette question (comme je le faisais quand je cherchais), dans mon cas, une installation très lente de Composer avait à voir avec ma version PHP (mot d'avertissement, je suis un complet et débutant Composer novice), même si Composer vérifie ses contrôles standard et dit que tout va bien. J'utilisais Ubuntu 12.04 LTS et j'étais trop paresseux pour passer de la version par défaut PHP 5.3.10 (la même version que vous utilisez) dans le référentiel Precise.

L'installation de Twig via Composer m'a pris à l'origine environ 30 minutes. J'ai abandonné l'installation de Doctrine après plus d'une heure. Je suis passé à la version 5.4.17 (en utilisant ce PPA https://launchpad.net/~ondrej/+archive/php5 ) et l’installation de Doctrine s’est faite en quelques secondes.

22
badcook

J'ai trouvé que c'est aussi très lent, dans les dizaines de minutes lentes.

Pour moi, j’ai ajouté -vvv et découvert qu’il était suspendu à des choses comme Downloading https://packagist.org/p/provider-active$53cdf887c8d2925b3501f47d6980fb7bda2310716369bf7a84857c6e62bbab0f.json

Je suis ensuite allé sur le navigateur et essayé de télécharger ce fichier JSON et bien sûr. C'était packagist.org pour être la cause de la lenteur.

14
Elijah Lynn

Dans mon cas, les suggestions ci-dessus n'ont pas fait de différence. Ce qui a consisté à utiliser le protocole HTTPS pour packagist:

php composer.phar config --global repo.packagist composer https://packagist.org

ou

composer config --global repo.packagist composer https://packagist.org

en fonction de votre configuration

10
Reuben L.

Pour diagnostiquer cette utilisation, j'ai utilisé la commande require command avec -vvv attribute.

composer require larapack/dd -vvv

Dans mon cas, j'ai constaté que la vitesse lente du compositeur était due à fxp/composer-asset-plugin.

composer global show
composer global remove fxp/composer-asset-plugin

et le tour est joué

0
Liam Kernighan