Langsames Aktualisieren von Composer-Abhängigkeiten, trotz –prefer-dist Flag

Lesezeit: 6 Minuten

Benutzer-Avatar
Jonathan

Warum dauert es bis zu zwei Minuten, bis meine Composer-Abhängigkeiten aktualisiert sind, selbst wenn keine Änderungen vorgenommen wurden?

Ein beliebter Vorschlag ist das Anhängen der --prefer-dist Flagge:

php composer.phar update --prefer-dist

Aber das macht in meinem Fall keinen Unterschied. Unten ist meine composer.json-Datei – übersehe ich etwas Offensichtliches?

{
    "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"
        }
    }
}

  • hast du versucht den Befehl mit auszuführen -vvv --profile wie in meiner Antwort vorgeschlagen? Welche Operationen dauern so lange? Hast du xdebug in php-cli aktiviert?

    – Nicolai Fröhlich

    11. Oktober 2013 um 11:54 Uhr


Benutzer-Avatar
Nicolai Fröhlich

Dieses Problem hängt oft damit zusammen, dass xdebug in Ihre CLI-Umgebung geladen wird. (Es spielt keine Rolle, ob xdebug aktiviert ist oder nicht.)

Sie können mit einem der folgenden inc-Befehle überprüfen, ob xdebug aktiviert ist.

// Unix
php -m | grep xdebug
// Windows
php -m | findstr xdebug

Weitere Informationen darüber, welche Vorgänge so lange dauern, erhalten Sie, indem Sie maximale Ausführlichkeit und Profilinformationen aktivieren. (Ersetzen Installieren mit aktualisieren wenn Sie die Pakete aktualisieren.)

composer install --prefer-dist -vvv --profile

  • Ich habe kein xdebug installiert und mein PHP und Composer laufen sehr langsam.

    – Gustavo Straube

    14. Mai 2014 um 21:23 Uhr

  • mit PHP 5.3.10, einer schnellen Verbindung, 6 Kernen, SSD-Laufwerk, viel Speicher und 4 zusätzlichen “require” in einer composer.json von Symfony.. composer update ging von 58 auf 46 Sekunden. :/

    – Sonntag

    5. August 2014 um 5:05 Uhr


  • Dies ist kein Problem mit Bower (unterstützt von Twitter) oder npm (unterstützt von Joyent), daher vermute ich, dass dies ein Problem mit der Belastung des Composer-Servers ist.

    – Michael J. Calkins

    4. Oktober 2014 um 20:26 Uhr

  • XDebug auf der Kommandozeile wird zum Erstellen von Code-Coverage-Statistiken mit PHPUnit benötigt.

    – Sven

    26. Mai 2015 um 16:28 Uhr

  • Was ist --prefer-dist genau machen?

    – crmpicco

    16. März 2017 um 7:47 Uhr

Benutzer-Avatar
Alkohol

Faktoren, die Composer verlangsamen können:

  • Wie erwähnt, xdebug kann die Leistung von Composer beeinträchtigen. Betrieb composer diagnose wird Sie auch davor warnen.

  • Betrieb update Anstatt von install. Menschen rennen viel zu oft einfach weg update ständig. Dadurch durchläuft Composer den gesamten Abhängigkeitsauflösungsprozess, unabhängig davon, ob sich etwas geändert hat oder nicht. Wenn du rennst install, übernimmt Composer die Anforderungen direkt aus Ihrer .lock-Datei und überspringt den Abhängigkeitsauflösungsprozess. Du sollst nur laufen update während des Entwicklungslebenszyklus Ihrer Anwendung. Und selbst dann müssen Sie es normalerweise nicht täglich ausführen.

  • Wenn Sie eine bestimmte Abhängigkeit haben, die Sie häufig selbst aktualisieren, können Sie versuchen, den Prozess zu vereinfachen, indem Sie ihn ausführen composer update vendor/package --with-dependencies stattdessen.

  • Einstellung minimum-stability zu dev. Dies erweitert die Menge an Möglichkeiten, die der Abhängigkeitsauflöser berücksichtigen muss, erheblich. Die sollte man fast nie senken minimum-stability zu dev es sei denn, Sie haben absolut keine andere Wahl. Suchen Sie nach Alternativen, z. B. die vorübergehende Verwendung einer Inline @dev Flagge.

  • dein verwendungsvorschlag install mein Problem gelöst. Vielen Dank !

    – Immobilien

    5. Juni 2017 um 9:39 Uhr

Benutzer-Avatar
Rai

Das Problem scheint behoben zu sein, aber vielleicht hilft es jemandem weiter.

Immer wenn ich die Composer-Installation oder -Aktualisierung ausführte, dauerte es mehr als 10 Sekunden, nur um die https://packagist.org/packages.json Datei. Schließlich fand ich heraus, dass das Problem mit IPv6 zusammenhängt, da das Abrufen von Dateien von IPv4-Sites weniger als eine Sekunde dauerte.
Das Problem ist, dass mein ISP IPv6 nicht unterstützt, aber ich hatte es in meinen Ethernet-Eigenschaften aktiviert. Nachdem ich das Häkchen entfernt habe Internet Protocol Version 6 (TCP/IPv6) In meinen Netzwerkeinstellungen wurden die Installations-/Aktualisierungsgeschwindigkeiten drastisch verbessert (von über 200 Sekunden auf etwa 10 Sekunden gesunken).

  • Die beste Antwort, die ich für dieses Problem gefunden habe, besteht darin, den PHP-Befehl zu aliasieren und das Socket-Timeout auf etwas Lächerliches zu setzen. alias php="php -d default_socket_timeout=1 -d xdebug.remote_enable=0"

    – Alex Bärker

    21. September 2016 um 1:31 Uhr

  • @AlexBarker danke für den Vorschlag, aber nur zur Kenntnis zu nehmen, schien in meinem Fall nicht zu helfen, -ddefault_socket_timeout=10 Ergebnis, 308 Sekunden, -ddefault_socket_timeout=100 Ergebnis 309 Sekunden, noch das IP v6- und v4-Protokoll

    – FantomX1

    31. Mai 2020 um 16:22 Uhr


Sie verwenden ein privates Repository. Dies erlaubt nicht das Herunterladen der gezippten Version der von Ihnen eingeschlossenen Version, sondern muss das Repository klonen. Außerdem kann es sein, dass das gesamte Repository gescannt werden muss, um die erforderliche Version zu finden.

Sie sollten prüfen, ob die Verwendung von Satis eine Option ist. Auf diese Weise können Sie ZIPs Ihrer eigenen Software vorbereiten und herunterladen, genau wie die Dinge, die auf Github gehostet werden (das dafür eine API hat, die von Composer verwendet wird, um das Herunterladen von ZIPs zu ermöglichen, auch wenn sie nicht explizit vorbereitet sind).

Ich hatte dieses Problem, als ich Symfony2 auf einer VM mit wenig Arbeitsspeicher ausführte. Ich habe den Arbeitsspeicher der Maschine erhöht und er hat sich drastisch verbessert. Sie können den Speicher Ihres Systems überprüfen und sehen, ob er aktualisiert werden kann.

  • Dies verwendete den Standardspeicher von Vagrant von 384 MB, eine Erhöhung auf 1 GB war ausreichend, es stellte sich heraus, dass der Komponist bei 456 MB seinen Höhepunkt erreichte

    – Aren

    10. September 2015 um 23:03 Uhr

Benutzer-Avatar
ako

Ich hatte das gleiche Problem mit composer updateich habe den Composer selbst mit auf die neueste Version aktualisiert composer selfupdate und jetzt ist es Geschwindigkeit akzeptabel.

  • Dies verwendete den Standardspeicher von Vagrant von 384 MB, eine Erhöhung auf 1 GB war ausreichend, es stellte sich heraus, dass der Komponist bei 456 MB seinen Höhepunkt erreichte

    – Aren

    10. September 2015 um 23:03 Uhr

MEINE LÖSUNG WINDOWS 10 x 64 Bit WAMP-Benutzer mit Laravel, nach wochenlangem langsamen Composer-Update und Composer-Bedarf

Sie benötigen ein Ding namens cacert.pem

https://curl.haxx.se/docs/caextract.html

fügen Sie diese Datei dann in Ihr wamp-Hauptverzeichnis C:\wamp64\cacert.pem ein

Suchen Sie dann im Suchregister nach php.ini und öffnen Sie alle Dateien mit diesem Namen in Sublime oder einem beliebigen Texteditor

finden Sie eine Zeile namens curl.cainfo und openssl.cafile

SETZEN SIE IHREN PFAD ZU DIESER DATEI – siehe das Beispiel in meinem Fall:

curl.cainfo="C:\wamp64\cacert.pem"

und

openssl.cafile="C:\wamp64\cacert.pem"

tun Sie dies für alle php.ini-Dateien, die Sie zuvor durchsucht haben, in allen Dateien!

OKAY SERVER NEU STARTEN, das funktioniert für mich, hoffe für Sie, ich wünschte, jemand würde diesen Kommentar machen! Also würde ich nicht 2 Wochen damit verbringen, es zu reparieren

auch anrufen

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

dies machen die Verbindung auf https laufen diese auch

composer install --prefer-dist -vvv --profile

1345480cookie-checkLangsames Aktualisieren von Composer-Abhängigkeiten, trotz –prefer-dist Flag

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy