Heim Entwicklungswerkzeuge composer Teilen Sie den Leitfaden zur Optimierung der automatischen Ladeleistung von Composer Autoload

Teilen Sie den Leitfaden zur Optimierung der automatischen Ladeleistung von Composer Autoload

Aug 05, 2020 pm 01:10 PM
composer

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!

Teilen Sie den Leitfaden zur Optimierung der automatischen Ladeleistung von Composer Autoload

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)

Hinweise

Wenn Ihr Projekt zur Laufzeit Klassen generiert, werden diese neuen Klassen damit nicht gefunden Optimierungsstrategie Generierte Klasse.

composer dump-autoload -aOptimierung der zweiten Ebene (Level-2/B): APCu-Cache verwenden

Befehl ausführen:

Befehl ausführen

Prinzip:

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 --apcuWie 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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Erweiterte Funktionen von Composer: Aliase, Skripte und Konfliktlösung Erweiterte Funktionen von Composer: Aliase, Skripte und Konfliktlösung Jun 03, 2024 pm 12:37 PM

Composer bietet erweiterte Funktionen, darunter: 1. Aliase: Definieren Sie praktische Namen für Pakete zur wiederholten Bezugnahme. 2. Skripte: Führen Sie benutzerdefinierte Befehle aus, wenn Sie Pakete installieren/aktualisieren, die zum Erstellen von Datenbanktabellen oder zum Kompilieren von Ressourcen verwendet werden , Zufriedenheitsbeschränkungen und Paketaliase lösen die unterschiedlichen Anforderungen mehrerer Pakete für dieselbe Abhängigkeitsversion auf, um Installationskonflikte zu vermeiden.

Was sind die gängigen Methoden zum Konvertieren von Arrays in Objekte in PHP? Was sind die gängigen Methoden zum Konvertieren von Arrays in Objekte in PHP? Apr 28, 2024 pm 10:54 PM

So konvertieren Sie ein PHP-Array in ein Objekt: Verwenden Sie die Klasse stdClass, verwenden Sie die Funktion json_decode(), verwenden Sie eine Bibliothek eines Drittanbieters (z. B. die Klasse ArrayObject, die Bibliothek Hydrator).

Agile Entwicklung und Betrieb der PHP-Microservice-Containerisierung Agile Entwicklung und Betrieb der PHP-Microservice-Containerisierung May 08, 2024 pm 02:21 PM

Antwort: PHP-Microservices werden mit HelmCharts für eine agile Entwicklung bereitgestellt und mit DockerContainer für Isolation und Skalierbarkeit in Containern verpackt. Detaillierte Beschreibung: Verwenden Sie HelmCharts, um PHP-Microservices automatisch bereitzustellen, um eine agile Entwicklung zu erreichen. Docker-Images ermöglichen eine schnelle Iteration und Versionskontrolle von Microservices. Der DockerContainer-Standard isoliert Microservices und Kubernetes verwaltet die Verfügbarkeit und Skalierbarkeit der Container. Verwenden Sie Prometheus und Grafana, um die Leistung und den Zustand von Microservices zu überwachen und Alarme und automatische Reparaturmechanismen zu erstellen.

PHP-Code-Versionskontrolle und Zusammenarbeit PHP-Code-Versionskontrolle und Zusammenarbeit May 07, 2024 am 08:54 AM

PHP-Code-Versionskontrolle: Es gibt zwei Versionskontrollsysteme (VCS), die üblicherweise in der PHP-Entwicklung verwendet werden: Git: verteiltes VCS, bei dem Entwickler Kopien der Codebasis lokal speichern, um die Zusammenarbeit und Offline-Arbeit zu erleichtern. Subversion: Zentralisiertes VCS, die einzige Kopie der Codebasis wird auf einem zentralen Server gespeichert und bietet so mehr Kontrolle. VCS hilft Teams, Änderungen zu verfolgen, zusammenzuarbeiten und auf frühere Versionen zurückzusetzen.

Die Rolle von PHP CI/CD in DevOps-Projekten Die Rolle von PHP CI/CD in DevOps-Projekten May 08, 2024 pm 09:09 PM

PHPCI/CD ist eine Schlüsselpraxis in DevOps-Projekten, die die Erstellungs-, Test- und Bereitstellungsprozesse automatisiert und dadurch die Entwicklungseffizienz und Softwarequalität verbessert. Eine typische PHPCI/CD-Pipeline besteht aus den folgenden Phasen: 1) Kontinuierliche Integration: Immer wenn sich der Code ändert, wird der Code automatisch erstellt und getestet. 2) Kontinuierliche Bereitstellung: Beschleunigen Sie die Bereitstellung, indem Sie getesteten und integrierten Code automatisch in der Produktionsumgebung bereitstellen. Durch die Implementierung der PHPCI/CD-Pipeline können Sie die Entwicklungseffizienz steigern, die Softwarequalität verbessern, die Markteinführungszeit verkürzen und die Zuverlässigkeit verbessern.

Wie verwende ich den Redis-Cache bei der PHP-Array-Paginierung? Wie verwende ich den Redis-Cache bei der PHP-Array-Paginierung? May 01, 2024 am 10:48 AM

Durch die Verwendung des Redis-Cache kann die Leistung des PHP-Array-Pagings erheblich optimiert werden. Dies kann durch die folgenden Schritte erreicht werden: Installieren Sie den Redis-Client. Stellen Sie eine Verbindung zum Redis-Server her. Erstellen Sie Cache-Daten und speichern Sie jede Datenseite in einem Redis-Hash mit dem Schlüssel „page:{page_number}“. Rufen Sie Daten aus dem Cache ab und vermeiden Sie teure Vorgänge auf großen Arrays.

Wie verwende ich PHP CI/CD für eine schnelle Iteration? Wie verwende ich PHP CI/CD für eine schnelle Iteration? May 08, 2024 pm 10:15 PM

Antwort: Verwenden Sie PHPCI/CD, um eine schnelle Iteration zu erreichen, einschließlich der Einrichtung von CI/CD-Pipelines sowie automatisierten Test- und Bereitstellungsprozessen. Richten Sie eine CI/CD-Pipeline ein: Wählen Sie ein CI/CD-Tool aus, konfigurieren Sie das Code-Repository und definieren Sie die Build-Pipeline. Automatisierte Tests: Schreiben Sie Unit- und Integrationstests und verwenden Sie Test-Frameworks, um das Testen zu vereinfachen. Praktischer Fall: Verwendung von TravisCI: Installieren Sie TravisCI, definieren Sie die Pipeline, aktivieren Sie die Pipeline und sehen Sie sich die Ergebnisse an. Implementieren Sie Continuous Delivery: Wählen Sie Bereitstellungstools aus, definieren Sie Bereitstellungspipelines und automatisieren Sie die Bereitstellung. Vorteile: Verbessern Sie die Entwicklungseffizienz, reduzieren Sie Fehler und verkürzen Sie die Lieferzeit.

Visualisierungstechnologie der PHP-Datenstruktur Visualisierungstechnologie der PHP-Datenstruktur May 07, 2024 pm 06:06 PM

Es gibt drei Haupttechnologien zur Visualisierung von Datenstrukturen in PHP: Graphviz: ein Open-Source-Tool, das grafische Darstellungen wie Diagramme, gerichtete azyklische Diagramme und Entscheidungsbäume erstellen kann. D3.js: JavaScript-Bibliothek zum Erstellen interaktiver, datengesteuerter Visualisierungen, zum Generieren von HTML und Daten aus PHP und zum anschließenden Visualisieren auf der Clientseite mithilfe von D3.js. ASCIIFlow: Eine Bibliothek zur Erstellung textueller Darstellungen von Datenflussdiagrammen, geeignet zur Visualisierung von Prozessen und Algorithmen.

See all articles