it-swarm.com.de

Was ist der beste Weg, um zu überwachen PHP Funktionen/Ausführungen?

Ich versuche, den besten Weg zu finden, um zu überwachen, welche PHP Codes/Funktionen, MySQL-Anfragen und/oder Plugins die Seiten einer Site verlangsamen.

Ich weiß, dass es eine Reihe verschiedener Optionen gibt, einschließlich WordPress-Plugins und Lösungen mit Firebug (Firephp). Aber was ist für Sie der beste Ansatz?

Persönlich denke ich, dass die ideale Lösung darin besteht, eine Art Code zu haben, der standardmäßig bei jeder WordPress-Installation installiert werden kann. Jedes Debuggen/Überwachen/Melden wird NUR ausgeführt, wenn Sie am Ende der URL einen optionalen Eintrag wie? = Debuggen. Aus Sicherheitsgründen wäre es sogar noch besser, wenn man sich zuerst im Admin-Bereich von WordPress anmelden und einen temporären Debug-Schlüssel erstellen müsste, der einen Hash-Schlüssel erstellt und ihn an die URL anfügt (wie debugkey = v09098v09aq2ov1a8923), die nur für verfügbar wäre 30 Minuten.

Aber zurück zu den eigentlichen Debug-Informationen ... Ich finde, dass die Verwendung von Firebug in vielen Situationen großartig ist, aber optional finde ich es hilfreich, wenn man an eine URL etwas anderes anhängen könnte, das zum Beispiel alle verwendeten Funktionen, Hooks oder Filter überlagert auf einer bestimmten Seite zusammen mit der Ausführungszeit für jeden.

Auf jeden Fall ... Ich dachte, viele von Ihnen hier müssen sich ebenfalls mit diesem Problem befasst haben, und daher würde ich es begrüßen, welche Lösungen Sie zur Lösung Ihrer Probleme verwenden.

Bitte erläutern Sie, welche Besonderheiten für andere, die dies lesen könnten, welche Besonderheiten bei der Installation zu beachten sind und wie diese richtig verwendet werden.

UPDATEDAusführen eines dedizierten Linux-Servers

6

Es gibt mehrere Werkzeuge und Möglichkeiten, und es wäre sicher schön, etwas schnell zur Hand zu haben. Ich kenne Plugin-Autoren, die Debug-Flags anbieten, damit Sie analysieren können, was ganz einfach los ist.

Was Plugins betrifft, habe ich es nicht getestet, sondern einige Screenshots angesehen und es ist zumindest informativ: Debug-Leiste (Wordpress-Plugin) und BlackBox-Debug-Leiste (Wordpress-Plugin) .

Ein anderer ist ein unbekannter Hooktracer: SJ Hook Profiler .

Ich empfehle dringend xdebug für Entwicklungs- und Testsysteme. Es ist eine Freude, es zu haben, wenn Sie ein Profil erstellen oder Fehler beheben müssen.

5
hakre

XHProf (Open Source, Teil des Facebook-Stacks für die Leistungsüberwachung) ist mühsam einzurichten (zumindest für Windows-Benutzer wie mich), aber es ist ein sehr gründliches und praktisches Leistungsprofiler-Tool für PHP.

Ich wünschte, es hätte eine Win-Version für meinen lokalen Teststack. :(

2
Rarst

Ich kann nur empfehlen die Krumo-PHP-Klasse , die innerhalb von 10 Sekunden zu jeder Installation hinzugefügt werden kann und von keinem lokalen Setup abhängt. Selbst wenn Sie nicht im Büro sind, haben Sie ein Debug-Tool dabei. Stellen Sie einfach sicher, dass Sie es nach allen anderen Dateien laden und mit if ( current_user_can('manage_options') ) krumo::enable(); laden, damit kein Gast oder anderer Benutzer auf Ihre Deugging-Nachrichten stößt, wenn Sie etwas debuggen, das bereits aktiv ist.

2
kaiser

Sie geben nicht an, wie Ihre Serveranordnung lautet. Wenn Sie sich in einer Shared Hosting-Umgebung befinden, stehen Ihnen nur eingeschränkte Optionen zur Verfügung. Wenn es sich um Ihren eigenen Server handelt, können Sie verschiedene Profilerstellungstools installieren, um den Überblick zu behalten. Schauen Sie sich diesen Thread über SO für einige Optionen an.

Die Verlangsamung der gelieferten Seite kann auch das Ergebnis vieler Dinge sein, von denen nur einige mit PHP/MySQL zusammenhängen. Sie können DNS-Probleme haben, eine Netzüberlastung auf Client- oder Server-Seite, schlecht geplante Seiten, auf denen viel JS eher zu früh als zu spät geladen wird, usw. usw.

Verwenden Sie das Programm Apache Benchmark , um die grundlegende Nahrungskette von Netzwerkverbindung + Serverzustellung der grundlegenden HTML-Seite zu testen. Vorsichtig! Sie können den Mist von einem Server mit diesem Welpen besiegen, und Ihre Hosting-Firma wird nicht amüsiert sein, wenn Sie eine Ein-Personen-Imitation eines DOS-Angriffs auf ihren Rechner durchführen.

Update: OK, ein dedizierter Linux-Server bietet Ihnen wichtige Optionen. Insbesondere werde ich xdebug verdoppeln und es ist die Möglichkeit, die Ausführung Ihres Codes zu profilieren. Es ist erstaunlich, wie schnell ein paar Läufe unter einem Profiler ein helles Licht auf eine unschuldig aussehende Funktion werfen können, die die Maschine zerkaut.

Wenn Ihnen nichts sofort auffällt, suchen Sie nach Routinen, die anscheinend mehr Zeit in Anspruch nehmen, als sie sollten (was auch immer das bedeutet) und/oder anscheinend viel heißen. Letzteres kann häufig durch einfaches Zwischenspeichern der Ergebnisse für bestimmte Werte behoben werden. Wenn es sich um ein allgemeines Problem handelt, bei dem verschiedene, kostenintensive Funktionen mit unterschiedlichen Parametern aufgerufen werden, können Sie sich die Memoizing betroffenen Funktionen ansehen. Ich habe das mehrere Male in Python gemacht, aber nicht in PHP. Hier ist ein Artikel über die Herangehensweise einer Person . Es gibt weitere Beiträge zu diesem Thema.

1
Peter Rowell