Heim > Backend-Entwicklung > PHP-Tutorial > Performance-Optimierung auf PHP-Ebene mit Blackfire

Performance-Optimierung auf PHP-Ebene mit Blackfire

Joseph Gordon-Levitt
Freigeben: 2025-02-08 08:59:10
Original
800 Leute haben es durchsucht

Blackfire: Pinpointing und Fixing Performance -Engpässe in Ihrem Gehöft verbesserte Anwendungen

PHP-level Performance Optimization with Blackfire

Key -Erkenntnisse:

  • Blackfire ist ein leistungsstarkes Werkzeug zur Identifizierung und Auflösung von Leistungs Engpässen in Anwendungen, insbesondere diejenigen, die mit Homestead verbessert wurden.
  • Die Diagramme von Blackfire (Referenzprofil, exklusive Zeit, inklusive Zeit, heiße Pfade) verstehen, ist entscheidend für die Steckdauer von Leistungsabläufen - sei es übermäßige Speicherverwendung, CPU -Zeit oder Gesamtaktivität.
  • Dieser Artikel zeigt die Anwendung von Blackfire bei der Optimierung eines Multi-Image-Galerie-Blogs. Es zeigt die Identifizierung von Engpässen (z. B. pdoexecute) und die Implementierung von Lösungen (z. B. Pagination), um die Leistung zu steigern.
  • kontinuierliche Leistungstests mit Blackfire sind im gesamten Lebenszyklus der Anwendung von entscheidender Bedeutung. Das Integrieren dieser Tests in Ihre CI/CD -Pipeline (eine Funktion, die durch den Premium -Plan von Blackfire angeboten wird) erhöht die Effizienz erheblich.

(Dieser Artikel ist Teil einer Reihe zum Erstellen einer Beispiel-Blog-Anwendung für Multi-Image-Galerie für Leistungsbenchmarking und Optimierung. Greifen Sie hier auf das Repository zu.)

Dieser Beitrag baut auf früheren Einführungen in Blackfire auf und demonstriert seine praktische Anwendung bei der Identifizierung und Lösung von Leistungsproblemen. Wir werden es verwenden, um unser Beispielprojekt zu analysieren und Bereiche für eine sofortige Verbesserung zu zielen. Wenn Sie Homestead verbessert (was empfohlen wird), sollte Blackfire bereits eingerichtet sein. Es ist kein früheres Blackfire -Wissen erforderlich.

Verständnis von Blackfire -Metriken:

Bevor wir beginnen, definieren wir wichtige Begriffe, die in den Leistungsdiagrammen von Blackfire verwendet werden:

  • Referenzprofil: Die anfängliche Leistungsbasis Ihrer Anwendung. Nachfolgende Profile werden mit dieser Basislinie verglichen, um Verbesserungen zu messen.
  • Exklusive Zeit: Die Zeit, die ausschließlich innerhalb einer bestimmten Funktion/Methode aufgewendet wird, ausgenommen die in ihren Funktionen aufgewendete Zeit.
  • inklusive Zeit: Die Gesamtzeit, die für die Ausführung einer Funktion aufgewendet wurde, einschließlich der Zeit, die in allen als als als sie genannten Funktionen aufgewendet wurde.
  • Heiße Pfade: Die aktivsten Teile Ihrer Anwendung während der Profilierung, häufig anhand von Bereichen mit hohem Ressourcenverbrauch (Speicher oder CPU).

Einrichten von Blackfire:

  1. Erstellen Sie ein Blackfire -Konto. Ihre Kontoseite enthält die Token und IDs, die zur Konfiguration Homestead.yaml erforderlich sind. Die Datei enthält Platzhalter unten:
# blackfire:
#     - id: foo
#       token: bar
#       client-id: foo
#       client-token: bar
Nach dem Login kopieren
Nach dem Login kopieren

diese Zeilen übernommen und die Platzhalterwerte durch Ihre Kontodetails ersetzen.

  1. Installieren Sie die Blackfire Chrome -Erweiterung. Diese Erweiterung wird hauptsächlich für die manuelle Profilerstellung verwendet, was in den meisten Szenarien üblich ist. Weitere Integrationen sind verfügbar (siehe die vollständige Liste hier).

Optimierung mit Blackfire: Eine Fallstudie

Wir werden die Homepage - eine kritische Seite für jede Website. Langsame Ladezeiten hier wirken sich direkt auf die Benutzererfahrung und die Absprungraten aus. Während andere Seiten (z. B. Bild -Upload) getestet werden könnten, wird die Leseleistung im Allgemeinen vor der Schreibleistung priorisiert.

Unsere anfängliche App lädt und sortiert alle Galerien nach Alter. Öffnen Sie die Homepage, klicken Sie auf die Blackfire -Erweiterungs -Schaltfläche und wählen Sie "Profil!".

Erstprofilergebnisse:

Die Grafik zeigt, dass PDOExecute 100% der inklusiven Zeit (dunkelrosa Abschnitt) verbraucht, was darauf hinweist, dass es sich um den primären Engpass handelt. Während andere Methoden größere hellrosa Balken (inklusive Zeit) zeigen, stellen diese die kumulative Zeit ihrer abhängigen Funktionen dar. Die dunkelrosa Abschnitte repräsentieren die Funktionen, die sofortige Aufmerksamkeit benötigen.

zum RAM -Modus zeigt, dass das Rendering des Zweigs die Mehrheit (ca. 40 MB) des RAM verbraucht. Dies wird angesichts der großen Datenmenge erwartet.

PHP-level Performance Optimization with Blackfire

heiße Pfade (dicke Grenzen) unterstreichen deutlich die Engpässe. Intensive Knoten (Knoten mit hoher Zeit) können auch auf Probleme hinweisen, auch wenn nicht direkt Teil des heißen Pfades.

Die

-Analyse zeigt, dass PDOExecute und unserialize (hohe RAM -Verwendung) durch das Laden aller Galerien auf der Homepage verursacht werden. Die Lösung: Pagination implementieren.

Implementierung von Pagination:

  1. add a PER_PAGE Konstante zu HomeController und setzen Sie es auf einen Wert wie 12.

    ein
  2. Ändern Sie die Abfassungsverfahren für die Galerie, um Pagination zu verwenden:

# blackfire:
#     - id: foo
#       token: bar
#       client-id: foo
#       client-token: bar
Nach dem Login kopieren
Nach dem Login kopieren
  1. Fügen Sie JavaScript in die Heimansicht für faules Laden hinzu:
$galleries = $this->em->getRepository(Gallery::class)->findBy([], ['createdAt' => 'DESC'], self::PER_PAGE);
Nach dem Login kopieren
  1. Fügen Sie HomeController eine neue Methode für faule Ladegalerien hinzu:
{% block javascripts %}
    {{ parent() }}

    <🎜>
{% endblock %}
Nach dem Login kopieren

Leistungsvergleich:

Nach dem Profiler nach der Implementierung der Pagination führen zu erheblichen Verbesserungen:

Speicherverbrauch wird zehnfach reduziert und das Laden ist fast augenblicklich. Der neue Engpass ist DebugClass, eine Folge der Entwicklungsumgebung. Die Umstellung in den Produktionsmodus verbessert die Leistung weiter:

Schlussfolgerung:

Die Leistung der Anwendung wird dramatisch verbessert, wobei die Ladezeiten der Seiten auf 58 ms gesunken sind. Weitere Optimierungen sind minimal. Regelmäßige Leistungstests mit Blackfire sind von entscheidender Bedeutung, und die Integration in Ihre CI/CD -Pipeline (verfügbar mit Blackfire's Premium -Plan) ist sehr zu empfehlen.

häufig gestellte Fragen (FAQ) zur PHP -Leistungsoptimierung:

Der vorgesehene FAQ -Abschnitt bleibt weitgehend unverändert, da er wertvolle Informationen bietet, die für die PHP -Leistungsoptimierung im Allgemeinen relevant sind. Es deckt Themen wie Überwachungstools, gemeinsame Probleme, Optimierungstechniken, Skalierbarkeit und Best Practices genau ab.

Das obige ist der detaillierte Inhalt vonPerformance-Optimierung auf PHP-Ebene mit Blackfire. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage