Heim Entwicklungswerkzeuge composer Composer-Autoloader-Optimierung

Composer-Autoloader-Optimierung

Oct 29, 2019 pm 02:29 PM
composer

Das Folgende ist eine Tutorial-Kolumne mit dem Composer-Befehl , um Ihnen die Optimierung des Composer-Autoloaders vorzustellen. Ich hoffe, dass es für Freunde in Not hilfreich sein wird!

Composer-Autoloader-Optimierung

Autoloader-Optimierung

Normalerweise läuft der Autoloader von Composer relativ schnell. Aufgrund der Autoloading-Regeln von PSR-4 und PSR-0 muss jedoch das Dateisystem überprüft werden, bevor eine Klasse endgültig analysiert wird. Dies führt dazu, dass die Geschwindigkeit des automatischen Ladens ziemlich langsam wird. In einer Entwicklungsumgebung ist dies jedoch eine sehr praktische Lademethode, da der Lader die Klasse beim Erstellen einer neuen Klasse sofort erkennt und verwendet, ohne dass Sie dazu aufgefordert werden müssen um die Autoloader-Konfiguration neu zu erstellen.

Die durch diese Art von Laderegel verursachten Probleme spiegeln sich tatsächlich in der Produktionsumgebung wider. In der Produktionsumgebung können Sie die Konfiguration vor jeder Bereitstellung sehr einfach neu erstellen, und neue Konfigurationen werden nicht zufällig zwischen den Bereitstellungsklassen angezeigt Damit Sie das Dateisystem nicht ständig überprüfen müssen, möchten Sie im Allgemeinen, dass der automatische Ladevorgang so schnell wie möglich abgeschlossen wird.

Aus den oben genannten Gründen bietet Composer einige Optimierungsstrategien für Autoloader.

Hinweis: Sie sollten keine der in diesem Artikel beschriebenen Optimierungsstrategien in einer Entwicklungsumgebung verwenden, da dies beim Hinzufügen oder Entfernen von Klassen zu verschiedenen Problemen führen kann. Tatsächlich wird der Leistungsgewinn durch die Anwendung dieser Einstellungen in einer Entwicklungsumgebung durch die dadurch verursachten Probleme bei weitem aufgewogen.

Optimierungsstufe 1: Klassenkartengenerierung

Wie wird es ausgeführt?

Es gibt mehrere Optionen, um diese Funktion zu aktivieren:

Setzen Sie „optimize-autoloader“: true in der Konfiguration von Composer.json

Verwenden Sie -o / - -optimize-autoloader ruft Installation oder Update auf

Verwenden Sie -o / --optimize, um dump-autoload aufzurufen

Was macht es?

Die Klassenkartengenerierung wandelt im Wesentlichen PSR-4/PSR-0-Regeln in Klassenkartenregeln um. Dies beschleunigt alles erheblich, da eine bekannte Klassenzuordnung den Pfad sofort zurückgibt und Composer garantieren kann, dass die Klasse vorhanden ist, sodass keine Dateisystemprüfungen erforderlich sind.

In PHP 5.6+ werden Classmaps auch im Opcache zwischengespeichert, was die Initialisierungszeit erheblich verkürzt. Wenn Sie sicherstellen, dass Opcache aktiviert ist, sollte die Klassenzuordnung sofort geladen werden und die Klassen werden schnell geladen.

Kompromisse

Bei diesem Ansatz gibt es keine wirklichen Kompromisse. Es sollte in der Produktion immer aktiviert sein.

Das einzige Problem besteht darin, dass das automatische Laden nicht verfolgt wird (d. h. wenn eine bestimmte Klasse nicht gefunden werden kann), sodass es immer noch möglich ist, dass diese Regeln, die auf PSR-4 zurückgreifen, Dateisystemprüfungen verursachen Langsamer . Um dieses Problem zu lösen, gibt es zwei sekundäre Optimierungsoptionen, die Sie aktivieren können, wenn Sie viele class_exists-Prüfungen für Klassen durchführen, die in Ihrem Projekt nicht vorhanden sind.

Optimierungsstufe 2/A: Autoritative Klassenzuordnung

Wie wird es aktiviert?

Es gibt mehrere Optionen, um diese Funktion zu aktivieren:

Setzen Sie „classmap-authoritative“: true im Konfigurationsschlüssel von Composer.json

Verwenden Sie -a / --classmap-authoritative Aufruf zum Installieren oder Aktualisieren

Verwenden Sie -a / --classmap-authoritative, um dump-autoload aufzurufen

Was bewirkt es?

Durch die Aktivierung dieser Option wird automatisch die Klassenkartenoptimierung der Stufe 1 aktiviert.

Diese Option ist einfach: Sie besagt, dass, wenn etwas im Klassendiagramm nicht gefunden wird, es nicht existiert und der Autoloader nicht versuchen sollte, das Dateisystem gemäß den PSR-4-Regeln zu betrachten.

Kompromisse

Diese Option sorgt dafür, dass der Autoloader immer schnell zurückkehrt. Andererseits bedeutet dies auch, dass das automatische Laden nicht zulässig ist, wenn die Klasse aus irgendeinem Grund zur Laufzeit generiert wird. Wenn dies bei Ihrem Projekt oder einer seiner Abhängigkeiten der Fall ist, können in der Produktion Probleme mit der Bezeichnung „Klasse nicht gefunden“ auftreten. Achten Sie darauf, es zu aktivieren.

Hinweis: Dies kann nicht in Verbindung mit der Level 2/B-Optimierung verwendet werden. Sie müssen sich für eines entscheiden, da sie dasselbe Problem auf unterschiedliche Weise lösen.

Optimierungsstufe 2/B: APCu-Cache

Wie aktiviere ich es?

Es gibt eine Option zum Aktivieren dieser Funktion:

Setzen Sie „apcu-autoloader“: true im Konfigurationsschlüssel von Composer.json

Verwenden Sie --apcu - Autoloader ruft Installation oder Update auf

Verwenden Sie --apcu, um dump-autoload aufzurufen

Was macht es?

Diese Option fügt den APCu-Cache als Fallback für die Klassenzuordnung hinzu. Klassenzuordnungen werden nicht automatisch generiert, daher müssen Sie bei Bedarf die Optimierung der Stufe 1 manuell aktivieren.

Unabhängig davon, ob die Klasse gefunden wird oder nicht, wird diese Tatsache immer in APCu zwischengespeichert, sodass sie bei der nächsten Anfrage schnell zurückgegeben werden kann.

Kompromisse

Diese Option erfordert APCu, was für Sie möglicherweise funktioniert oder auch nicht. Es verwendet auch APCu-Speicher zum automatischen Laden, ist jedoch sicher in der Verwendung und führt nicht dazu, dass Klassen nicht gefunden werden, wie die obige autorisierende Klassenzuordnungsoptimierung.

Hinweis: Dies kann nicht in Verbindung mit der Level 2/A-Optimierung verwendet werden. Sie müssen sich für eines entscheiden, da sie dasselbe Problem auf unterschiedliche Weise lösen.

Das obige ist der detaillierte Inhalt vonComposer-Autoloader-Optimierung. 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 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 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.

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.

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).

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.

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.

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.

See all articles