Die folgende Tutorial-Kolumne von Composer stellt Ihnen den Leitfaden zur automatischen Ladeleistungsoptimierung des Composer vor. Ich hoffe, dass er Freunden in Not hilfreich sein wird!
Der von Composer bereitgestellte Autoload-Mechanismus macht es für uns sehr bequem, Code zu organisieren und neue Klassenbibliotheken einzuführen, verringert aber auch die Leistung des Projekts erheblich.
Der Hauptgrund, warum das automatische Laden von Composer langsam ist, liegt in der Unterstützung für PSR-0 und PSR-4. Wenn der Loader einen Klassennamen erhält, muss er den entsprechenden Speicherort der Klassendatei im Dateisystem finden, was zu einem führt großer Leistungsverlust Dies ist natürlich immer noch nützlich, wenn wir entwickeln, damit die neuen Klassendateien, die wir hinzufügen, sofort wirksam werden können. Aber im Produktionsmodus möchten wir diese Klassendateien finden und so schnell wie möglich laden.
Composer bietet also mehrere Optimierungsstrategien. Diese Optimierungsstrategien werden im Folgenden erläutert.
Optimierung der ersten Ebene (Ebene 1): Klassenkarte generieren
Ausführung:
Befehl ausführencomposer dump-autoload -o
(-o entspricht --optimize)
Prinzip:
Die Essenz davon Der Befehl lautet: Konvertieren Sie PSR-4/PSR-0-Regeln in Classmap-Regeln. Da Classmap die Entsprechung zwischen allen Klassennamen und Klassendateipfaden enthält, muss der Loader nicht mehr nach Dateien im Dateisystem suchen. Den Pfad zur Klassendatei finden Sie direkt in der Classmap.
Hinweise
Es wird empfohlen, Opcache zu aktivieren, was das Laden von Klassen erheblich beschleunigt.
php5.5 und spätere Versionen werden standardmäßig mit Opcache geliefert.
Dieser Befehl berücksichtigt nicht die Situation, in der die Zielklasse nicht in der Klassenzuordnung gefunden wird. Wenn der Loader die Zielklasse nicht finden kann, sucht er dennoch im Dateisystem gemäß den Regeln von PSR-4/PSR-. 0?
Durch die Ausführung dieses Befehls wird implizit auch der Level-1-Befehl ausgeführt, d. h. die Klassenzuordnung wird ebenfalls generiert. Der Unterschied besteht darin, dass der Loader nicht im Dateisystem sucht (d. h , implizit Es wird davon ausgegangen, dass sich alle legalen Klassen in der Klassenzuordnung befinden und es keine anderen Klassen gibt, sofern sie nicht illegal aufgerufen werden)
HinweiseWenn Ihr Projekt zur Laufzeit Klassen generiert, werden diese neuen Klassen damit nicht gefunden Optimierungsstrategie Generierte Klasse.
composer dump-autoload -a
Optimierung der zweiten Ebene (Level-2/B): APCu-Cache verwenden
Befehl ausführen:
Befehl ausführenPrinzip:
Für die Verwendung dieser Strategie muss die Apcu-Erweiterung installiert sein. apcu kann als Speicher verstanden werden und von mehreren Prozessen gemeinsam genutzt werden.
Diese Strategie besteht darin, das im Dateisystem gefundene Ergebnis im gemeinsam genutzten Speicher zu speichern, wenn die Zielklasse beim nächsten Mal nicht in der Klassenzuordnung gefunden wird. Sie kann dann direkt aus dem Speicher zurückgegeben werden, ohne dass eine Suche erforderlich ist Gehen Sie erneut zum Dateisystem und suchen Sie erneut. In der Produktionsumgebung wird diese Strategie im Allgemeinen zusammen mit Level-1 verwendet. Führen Sie Composer Dump-Autoload -o --apcu aus. Auf diese Weise muss dies nur der Fall sein, wenn in der Produktionsumgebung eine neue Klasse generiert wird wird einmal im Dateisystem durchsucht. Kann zwischengespeichert werden, was die Mängel von Level-2/A ausgleicht.
composer dump-autoload --apcu
Wie wählt man eine Optimierungsstrategie aus?
Wählen Sie eine Strategie basierend auf der tatsächlichen Situation Ihres Projekts. Wenn Ihr Projekt beim Ausführen keine Klassendateien generiert und zum Laden das automatische Laden von Composer erfordert, verwenden Sie Level-2/A, andernfalls verwenden Sie Level-1 und Level-2/. B ist die bessere Wahl.
Ein paar Tipps
Die Level-2-Optimierung ist im Grunde eine Ergänzung zur Level-1-Optimierung. Bei Level-2/A geht es hauptsächlich darum, zu entscheiden, ob die Zielklasse nicht in der Klassenkarte gefunden werden kann -2/B bietet hauptsächlich einen Caching-Mechanismus, wenn er nicht in der Klassenzuordnung gefunden wird, wird der im Dateisystem gefundene Dateipfad zwischengespeichert, um nachfolgende Suchvorgänge zu beschleunigen.Wenn Level-2/A ausgeführt wird, bedeutet dies, dass es nicht in der Klassenkarte gefunden werden kann und die Suche nicht fortgesetzt wird. Level-2/B wird zu diesem Zeitpunkt nicht wirksam.
Egal wie die Situation ist, es wird empfohlen, Opcache zu aktivieren. Dies wird die Ladegeschwindigkeit von Klassen erheblich verbessern. Ich habe die Leistungsverbesserung visuell um mindestens das Zehnfache gemessen.Das obige ist der detaillierte Inhalt vonTeilen Sie den Leitfaden zur Optimierung der automatischen Ladeleistung von Composer Autoload. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!