Warum ist PHP Composer so langsam, wenn ich nur ein Projekt ohne Abhängigkeiten initiiere? Hier sind die Befehle, die ich ausführe:
composer init
<Schritt durch die Erstellung von composer.json, definieren Sie 0 Null-Abhängigkeiten>
composer install
Warten Sie 3 Minuten (keine Übertreibung).
Alles, was der Komponist tun muss, ist, einen Autoloader einzuziehen und zu erstellen /vendor
. Warum dauert es so lange? Warum passiert dieser Schritt nicht composer init
?
Gibt es eine Konfigurationsoption, mit der ich einen zwischengespeicherten Autloader und Hersteller heranziehen kann init
?
php
composer-php
AgmLauncher
quelle
quelle
compose install
mehr als 5 Minuten angefangen und es wurde noch nicht abgeschlossen.Composer version 1.0-dev (07c644ac229a21df80180598d8bb9aaba232eecb) 2015-02-03 12:51:10
. Vielleicht ist es nicht die neueste Version, aber immer noch neuer als Ihr IBM-Mainframe ;-)composer self-update
Antworten:
Deaktivieren Sie außerdem Xdebug . Xdebug kann Komponisten verursachen Minuten sogar zu nehmen , wenn es als einen Befehl so einfach ausgeführt
composer --version
.quelle
Weil Composer von implementiert wird
file_get_contents()
. Das hat keine TCP-Optimierungen, kein Keep-Alive, kein Multiplexing usw.Ich habe ein Composer-Plugin erstellt, um Pakete parallel herunterzuladen: https://packagist.org/packages/hirak/prestissimo
Versuch es bitte. In meiner Umgebung
composer install
wird 10 mal schneller.quelle
composer global require "squizlabs/php_codesniffer=*" -vvv
composer config --global repo.packagist composer https://packagist.org
quelle
composer config --global repo.packagist composer https://packagist.org
was war das! Genial! 🏆Dasselbe hier. Weitere Informationen erhalten Sie mit "composer install --profile -vvv". In meinem Fall dauert das Herunterladen einiger JSON-Dateien sehr lange. Sie werden auf meinem Server zwischengespeichert, aber sie werden immer noch bei jedem Composer-Update / Installationsaufruf heruntergeladen.
... 30 Minuten später ...
Es sieht aus wie ein Leistungsproblem @ packagist.org. Jetzt läuft die Composer-Installation innerhalb von 2 Sekunden! Und heruntergeladene JSON-Dateien werden ordnungsgemäß zwischengespeichert.
quelle
Ich bin auf dieses Problem gestoßen, und es hat mich auf eine Kurve gebracht, da ich Xdebug nirgendwo auf meinem Computer installiert habe. Es stellt sich heraus, dass es sich um Fehler im IPv6- Adressierungsmodus handelte. Also zum Testen bin ich gelaufen
IPv4 wurde durchlaufen, aber IPv6 ist fehlgeschlagen. Am Ende sollten Sie herausfinden, warum Ihr Netzwerk-Stack dies nicht unterstützt, aber in meinem Fall habe ich beschlossen, nur den IPv4-Verkehr zu bevorzugen, bis ich das beheben kann. Unter CentOS habe ich die Datei /etc/gai.conf erstellt / geändert und Folgendes eingefügt:
Unter Ubuntu können Sie diese Datei auch bearbeiten und die Zeile auskommentieren
Quelle auf Rackspace Community Hub
quelle
Unter Ubuntu Xenial 16.04 VPS müssen Sie Folgendes tun:
Es konfiguriert IPv4 als bevorzugt gegenüber IPv6.
/server/93717/setting-ipv4-as-preferred-protocol-over-ipv6
quelle
In meinem Fall wurde die Composer-Version, die ich ausgeführt habe, zurückdatiert. Nach der Aktualisierung der Composer-Version selbst war das Problem behoben.
Um die Composer-Version zu aktualisieren, führen Sie sie aus
und dann benötigen Sie das Composer-Paket und Sie sind fertig.
quelle
permission
Problem gibt, ist ein Vorurteil.Wenn eine der vorherigen Antworten nicht funktioniert, überprüfen Sie, ob Ihre Firewall TCP_OUT an Port 9418 zulässt.
Meine Firewall-Sicherheit war zu scharf. Dies führte dazu, dass Composer so lange dauerte, dass ich nie eine Zeitüberschreitung oder einen Hinweis darauf bekam, dass der Port blockiert war.
quelle
Meins war beim Herunterladen von JSON-Dateien wegen des Antivirus langsam. Einige Virenschutzprogramme scannen den gesamten Webdatenverkehr und die Analyse von JSON-Dateien ist möglicherweise langsam. Versuchen Sie, Ihren AV zu deaktivieren, während Sie Composer ausführen.
quelle
Der beste Weg, dies herauszufinden, besteht darin, Composer Update / Install mit Ausführlichkeit auszuführen. Komponist {install / update} -vvv. Die Verwendung des Flags -h kann Ihnen in Zukunft helfen
quelle
Bearbeiten: Schlussfolgerung: Keine hier aufgeführte Lösung oder scheint im Allgemeinen kugelsicher zu sein. Was hilft schließlich ist in der Regel Komponisten mit inkrementell, erfordert oder nur ein einzelnes Paket zu einem Zeitpunkt unter Verwendung von Entfernen
composer require
,composer remove
Befehl sieht auch Hinzufügen einer „Nicht-Abhängigkeit spezifische“ -Einstellung kann jede Bibliothek wird im Interesse der es der Aktualisierung hinzugefügt / entfernt / Aktualisieren der gesperrten Cache-Konfiguration von composer.json.Gruppieren Sie meine Erfahrungen mit Antworten von hier und von den fraglichen verlinkten.
Vorher habe ich jede einzelne in dieser Frage erwähnte Lösung bis zu diesem Zeitpunkt ausprobiert. Es half mir jedoch immer noch nicht, obwohl ich versuchte / bemerkte, dass die Installation einer anderen einzelnen Bibliothek sehr schnell war, und untersuchte daher nacheinander die Bibliotheken, die den Flaschenhals verursachen könnten.
1) JA Und ich habe es als Codezeption gefunden.
"codeception/codeception": "2.4.0",
Es dauerte allein fast 200 Sekunden, obwohl es zusammen mit anderen Bibliotheken manchmal fast 12 Minuten lang lief. Darüber hinaus scheint der Komponist nicht in Echtzeit zu reflektieren, wenn er nach 20 Sekunden Startzeit 0,35 Sekunden usw. ausgibt.
Der Lauf vorher
2) JA Übrigens, Prestissimo, wie ich bereits erwähnte, wurde bereits angewendet und es schien zu helfen, da auf einem anderen sehr schnellen Computer, der ohne Codezeption viel schnelleres Internet hat, die Installation 5-mal länger dauerte, 518 Sekunden, möglicherweise aufgrund von Prestissimo oder anderen Ratschlägen hier dauerte es 110 Sekunden.
composer global require hirak/prestissimo
3) JA Windows ist langsam, ebenso wie virtualisierte Ordner von Windows bis Linux. Das Ausführen außerhalb des freigegebenen Ordners unter Linux schien dies etwa zweimal zu beschleunigen. Obwohl es an Cache liegen könnte.
4) NEIN
ist pro einzelnen Prozess wie Git Checkout und schien überhaupt nicht zu helfen, auch nicht auf 10s eingestellt, da es bereits sehr groß war. Es hilft vielleicht nur, wenn ein Dienst komplett ausfällt.
5) JA Die Installation mit entferntem oder leerem Herstellerordner = frisch scheint erheblich schneller zu sein (ca. 1 Minute und länger) als das Hinzufügen zu den Herstellerdateien und anderen darin enthaltenen Paketen
6) YES scheint unter Ubuntu18 apache2 ohne xdebug-eigenes Image langsamer zu sein als unter Debian10 php-fpm, selbst mit xdebug im Yii2-Starter-Kit, aus irgendeinem Grund etwa zweimal langsamer,
cat /etc/*-release
um die Linux-Distribution herauszufinden7) NO,
php -ddefault_socket_timeout=1 /usr/local/bin/composer --verbose --profile install
das hier erwähnt wurde, schien trotz des --prefer-dist-Flags und des dort erwähnten IP v6 v v4-Protokolls nicht zu helfen .8) NEIN Die Installation von zip scheint nicht zu helfen. Die PHP-Installation hatte zip vorinstalliert. Sie beschwerte sich immer noch, dass sie erst als Linux-Pakete installiert wurde, aber der Prozess in einer einzelnen Simulation wurde um 100 Sekunden von 650 auf 750 Sekunden verlangsamt. Gleiche Umgebungsbedingungen.
As there is no 'unzip' command installed zip files are being unpacked using the PHP zip extension
https://stackoverflow.com/a/51208804/3419535 Testen unter Bedingungen ohne Cache--no-cache
9) JA entfernen
"minimum-stability ": "dev",
10) JA Verwenden Sie Preferen-Dist
composer require robmorgan/phinx:@dev --prefer-dist -vvv --profile
(die Verwendung eines Require-Befehls als Beispiel, da die Verwendung von Partial-Require-Befehlen, wie oben erwähnt, anstelle einer vollständigen Installation über einen Installationsbefehl eine der bedeutendsten Beschleunigungen zu sein scheint und das Erfordernis von @ Abweichungen von den vorherigen Punkten, wenn sieminimum-stability: dev
nicht generisch auf alle Abhängigkeiten angewendet werden, scheinen harmlos zu sein, wenn sie auf Einzelfallbasis (Abhängigkeitsbasis) verwendet werden.quelle
Falls Sie Ihre composer.lock-Datei gelöscht haben und dann gegangen sind
composer install
, wird das Herunterladen von Abhängigkeiten zu langsam. Wenn dies der Fall ist, verwenden Sie dencomposer update
Befehl und er kann Ihnen oder anderen helfen.quelle