Pourquoi PHP composer est-il si lent?

Pourquoi composer est-il si lent alors que tout ce que je fais est d'initialiser un projet avec zéro dépendance? Voici les commandes que je lance:

composer init

composer install

Attendez 3 minutes (pas une exagération).

Tout ce que composer A à faire est de tirer un chargeur automatique et de créer /vendor, alors pourquoi cela prend-il si longtemps? D'ailleurs, pourquoi cette étape ne se produit - elle pas sur composer init?

Existe-t-il une option de configuration que je peux utiliser pour extraire un chargeur automatique et un fournisseur mis en cache sur init?

47
demandé sur AgmLauncher 2015-02-10 19:05:48

5 réponses

Aussi, désactivez xdebug. Xdebug peut faire en sorte que Composer prenne quelques minutes même lors de l'exécution d'une commande aussi simple que composer --version.

18
répondu adjco 2017-01-07 19:58:21

Parce que composer implémente par file_get_contents(). Cela n'a pas D'optimisations TCP, pas de Keep-Alive, pas de multiplexage...

, j'ai créé un compositeur plugin pour télécharger les paquets en parallèle.
https://packagist.org/packages/hirak/prestissimo

$ composer global require hirak/prestissimo

S'il vous plaît essayer. Dans mon environnement, composer install devient 10 fois plus rapide.

187
répondu hiraku 2016-06-29 14:11:01
  1. assurez-vous d'avoir la dernière version de Compositeur.
  2. Installer en mode verbeux en ajoutant -vvv, par exemple composer global require "squizlabs/php_codesniffer=*" -vvv
  3. Si vous êtes en mesure de savoir où composer est confronté à la lenteur, par exemple, le mien était bloqué pendant 5 minutes lors du téléchargement de paquets. Il a fallu >5 minutes pour télécharger un fichier de 20 Ko sur une connexion de 50 mbps. C'était parce qu'il téléchargeait les paquets de packagist en utilisant http et non https. Apporter ces modifications à la configuration a résolu mon problème: composer config --global repo.packagist composer https://packagist.org
30
répondu sgr12 2017-05-25 07:36:57

Pareil ici. Obtenez plus de détails avec "compositeur install --profil -vvv". Dans mon cas, il faut beaucoup de temps pour télécharger quelques fichiers json. Ils sont mis en cache sur mon serveur mais sont toujours téléchargés avec chaque appel composer update/install.

... 30 Minutes plus tard ...

Ressemble à un problème de performance @packagist.org. maintenant compositeur installer fonctionne dans les 2 secondes! Et les fichiers JSON téléchargés sont correctement mis en cache.

7
répondu ppan 2015-02-10 17:18:54

Si l'une des réponses ci-dessus ne fonctionne pas, vérifiez si votre pare-feu autorise TCP_OUT sur le port 9418. Ma sécurité de pare-feu était trop forte. Cela a fait que composer a pris si longtemps, je n'ai jamais eu de délai d'attente ou d'indication que le port était bloqué. Espérons que cela aide!

0
répondu gidomanders 2018-02-16 15:57:20