Leistungsoptimierung, neue Funktionen und Upgrade-Anleitungen durch die Veröffentlichung von Composer 2.0
Composer hat gestern am Programmer's Day Version 2.0 veröffentlicht. Diese Version liegt kurz vor der Veröffentlichung der Betaversion von Composer 1.0 Als PHP-Paketverwaltungstool hat Composer innerhalb von acht Jahren dem Elefanten Flügel verliehen (das PHP-Logo ist ein Elefant) und die Installations- und Verwaltungserfahrung neuer Erweiterungspakete (oder sogenannte Abhängigkeitspakete) mit sich gebracht, was nicht nur die Erfahrung reduziert ihre Wartungskosten, sondern bereichert auch das PHP-Ökosystem erheblich.
Diese neue Version bietet viele neue Funktionen und, was noch wichtiger ist, auch die Leistung wurde erheblich verbessert. Wenn Sie interessiert sind, können Sie sich die detaillierten Upgrade-Details im Composer-GitHub-Repository ansehen. Hier gebe ich Ihnen eine kurze Einführung in den Leistungsvergleich der neuen und alten Versionen in beliebten PHP-Projekten, die wichtigsten neuen Funktionen und wie Sie ein Upgrade durchführen Komponist 2.0.
Leistungsoptimierung
Die neue Version hat fast den gesamten Code des zwischen Composer und packagist.org verwendeten Protokolls vollständig zur Abhängigkeitsauflösung umgestaltet, einschließlich der Optimierung des parallelen Herunterladens von Dateien und der Einschränkungsbewertung mithilfe von Curl (Das heißt, Version Kontrolle von Erweiterungspaketen) usw. Diese Rekonstruktionen haben Composer 2.0 hinsichtlich Geschwindigkeit und Speichernutzung erheblich verbessert.
Die tatsächliche Leistung dieser Verbesserungen hängt jedoch von den spezifischen Nutzungsszenarien ab. Obwohl der Beamte Berichte über eine Leistungsverbesserung von 50 % bei einigen Projekten erhalten hat, kann dies nicht als Grundlage für die Angabe genauer Zahlen verwendet werden, die für alle Szenarien gelten Es ist sicher: Ja, wenn Sie Composer 2.0 noch nicht verwendet haben, werden Sie von Ihrer Erfahrung mit der neuen Version überrascht sein.
Darüber hinaus sind Require/Remove und einige Updates viel schneller als zuvor, da Composer jetzt nur die Metadaten lädt, die dem geänderten Erweiterungspaket entsprechen.
Das Folgende ist ein Vergleich der Geschwindigkeitsoptimierung von Composer 1 und Composer 2 in aktuell beliebten PHP-Projekten:
Wie Sie sehen können, verbessert sich die Leistung bei Laravel-Projekten um etwa das Vierfache. Ich habe persönlich erlebt, dass ich die alte und die neue Version zum Initialisieren eines Laravel-Projekts verwendet habe, und es gab tatsächlich eine deutliche Geschwindigkeitsverbesserung, die mit bloßem Auge sichtbar war.
Die wichtigsten neuen Funktionen auf einen Blick
Werfen wir einen kurzen Überblick über einige wichtige Updates in Composer 2.0:
Architektonische Anpassungen
Die Art und Weise, wie Abhängigkeitsaktualisierungen intern durchgeführt werden, wurde überarbeitet, und für Sie: Sie können jetzt mehr deterministische Updates sehen. Nachdem das Update abgeschlossen ist, wird der Installationsprozess automatisch gleichzeitig ausgeführt, wodurch vermieden wird, dass der Prozess aufgrund von Netzwerkproblemen erst zur Hälfte der Installation abgebrochen wird.
Neue Laufzeitfunktionen
vendor/autoload.php hat einen Plattformerkennungsschritt während der Initialisierung hinzugefügt, der hauptsächlich prüft, ob die aktuelle PHP-Version und die Erweiterungspaketversion übereinstimmen. Wenn sie nicht übereinstimmen, schlägt die Initialisierung fehl.
Im Composer 2.0-Projekt sehen Sie eine neue InstalledVersions-Klasse im Vendor/Composer-Verzeichnis. Sie wird automatisch in jedes Projekt geladen und ist zur Laufzeit gültig. Sie können sie verwenden, um zu überprüfen, was im Laufzeitprojekt gültig ist. Erweiterungspaket und seine Versionsnummer.
Wenn Ihr Code von diesen neuen Laufzeitfunktionen abhängt, können Sie die Abhängigkeitsanweisung „composer-runtime-api“: „^2.0“ im erforderlichen Konfigurationselement von Composer.json hinzufügen.
Optimierung von Fehlerberichten
Composer 2.0 optimiert die Anzeige von Fehlerberichten, wenn Abhängigkeiten nicht aufgelöst werden können. Die Fehlermeldungen sind jetzt kürzer, klarer und wiederholen sich weniger.
Teilaktualisierung mit vorübergehenden Einschränkungen
Jetzt können Sie Composer Update Vendor/Package:1.0.* ausführen, um die angegebene Erweiterungspaketversion (z. B. Vendor/Package hier) zu aktualisieren. Composer.json wird dadurch nicht aktualisiert und wird auch nicht aktualisiert it Aktualisieren Sie die Datei „composer.lock“ Wenn Sie diese temporäre Einschränkung hinzufügen und alle Abhängigkeiten gleichzeitig aktualisieren möchten, müssen Sie den Befehl „composer update --with seller/package:1.0.*“ verwenden.
Aktualisieren Sie auf Composer 2.0 Upgrade Composer 2.0 und der neue Plattformerkennungsmechanismus erkennen, ob die Laufzeit-PHP-Version und die Erweiterungspaketversion übereinstimmen. Dies kann zu Problemen mit der bisher üblichen Erweiterungspaket-Abhängigkeitsauflösung führen. Sie können Composer Self-Update --Rollback oder Composer The Self verwenden Der Befehl -update --1 führt ein Rollback auf eine frühere Version von Composer durch. Weitere Informationen finden Sie im Composer-Upgrade-Handbuch.