xDebug: leistungsf?higes Debugging- und Leistungsanalyse -Tool für PHP -Entwickler
Kernpunkte:
- xDebug ist eine leistungsstarke, kostenlose und Open -Source -PHP -Erweiterung, die Debugging -Unterstützung, Stapelverfolgung, Leistungsanalyse, Codeabdeckung und andere Funktionen bietet. Es erm?glicht Entwicklern, die Ausführung der Anwendung jederzeit zu pausieren und den Wert von Variablen zu überprüfen, um besser zu verstehen, wie PHP ausgeführt wird.
- xDebug kann als Leistungsanalyse -Tool für PHP -Anwendungen verwendet werden, wobei wichtige Details wie Aussagen und Funktionen Ausführungszeit und Anzahl der Anrufe aufgezeichnet werden. Durch die Analyse dieser Ausg?nge k?nnen Sie verstehen, wo der Engpass liegt, und so Ihre Leistung für die Leistung optimieren.
- Um xDebug zu verwenden, muss es ordnungsgem?? installiert und konfiguriert werden. Xdebug ist in Xampp oder MAMP vorinstalliert. Aktivieren Sie es einfach in php.ini. Für andere Plattformen kann es über den Paketmanager installiert werden. Es ist zu beachten, dass die Verwendung anderer Zend -Erweiterungen mit Xdebug in Konflikt stehen kann.
PHP ist die beliebteste Sprache in der Webentwicklung, wurde jedoch oft wegen des Fehlens eines geeigneten Debuggers kritisiert. Entwickler, die Sprachen wie Java und C# verwenden, k?nnen leistungsstarke Suiten von Debugging -Tools verwenden, die h?ufig direkt in ihre IDES integriert sind. Die Trennung von Webservern und PHP -IDEs hat uns jedoch daran gehindert, viele der gleichen Tools zu verwenden. Wir fügen dem Code manuell Debug -Anweisungen hinzu ... bis XDEBUG diese Lücke füllt. Xdebug ist ein kostenloses Open -Source -Projekt, das von Derick Rethans erstellt wurde und wahrscheinlich eine der nützlichsten PHP -Erweiterungen ist. Es bietet nicht nur grundlegende Debugging -Unterstützung, sondern auch Stapelverfolgung, Leistungsanalyse, Codeabdeckung und mehr. In diesem Artikel wird erl?utert, wie Sie XDEBUG installieren und konfigurieren, wie man PHP -Anwendungen von NetBeans debuggen und Berichte zur Leistungsanalyse in KCACHEGRIND lesen.
installieren und konfigurieren XDEBUG
Wenn Sie XAMPP oder MAMP verwenden, ist Xdebug vorinstalliert. Wenn Sie eine paketbasierte Installation auf Plattformen wie Ubuntu verwenden, k?nnen Sie sie über den Paketmanager mit einem Befehl wie apt-get install php5-xdebug
installieren. Der Eintrag für Xdebug in meinem php.ini sieht folgenderma?en aus:
<code>[xdebug] zend_extension="/Applications/MAMP/bin/php5.2/lib/php/extensions/no-debug-non-zts-20060613/xdebug.so" xdebug.remote_enable=1 xdebug.remote_host=localhost xdebug.remote_port=9000</code>
zend_extension
Geben Sie den Pfad zum XDebug -Modul an. xdebug.remote_enable
ob die Wertschaltererweiterung aktiv ist. xdebug.remote_host
ist Ihr Systemname oder Ihre IP -Adresse (hier habe ich localhost
angegeben, da ich beide auf demselben Computer arbeite. Wenn Sie jedoch einen anderen Wert für Ihre Einstellungen angeben müssen, kann der Wert eine IP -Adresse oder ein DNS -Hostname sein) . xdebug.remote_port
ist der Port, an dem der Client von der XDEBUG -Verbindung h?rt (9000 ist der Standard). Stellen Sie bei der Verwendung von XDEBUG sicher, dass Sie keine anderen Zend -Erweiterungen verwenden, da sie mit XDebug in Konflikt stehen. Es gibt andere Installationsoptionen. Die XDEBUG -Website bietet einen einfachen Assistenten, der Sie durch den Installationsprozess führt. Sie k?nnen die Ausgabe von phpinfo()
oder php –i
erhalten, in ein Textfeld einfügen, den Assistenten Ihre Serverkonfiguration analysieren und Sie zum Kompilieren von XDEBUG auf Ihrem Computer leiten.
debugg
Normalerweise ist es verlockend, eine Kombination von var_dump()
und exit/die()
zu debuggen. Das Problem bei diesem Ansatz ist jedoch, dass Sie den Code zum Debuggen ?ndern müssen. XDEBUG überwindet dies, indem Sie die Ausführung Ihrer Anwendung überall, wo Sie sie ben?tigen, pausieren k?nnen. Sie k?nnen dann die Werte von Variablen in diesem Bereich überprüfen, um besser zu verstehen, wie PHP ausgeführt wird. Sie k?nnen Netbeans problemlos so konfigurieren, dass sie als XDEBUG -Client fungieren. ?ffnen Sie das Optionsfenster (Tools & GT; Optionen) und wechseln Sie im Abschnitt PHP zur Registerkarte Debug. Geben Sie den in Php.ini angegebenen Debug -Port und die Sitzungs -ID ein, und Sie müssen die Sitzungs -ID mit der Anforderung übergeben, die Sie debuggen m?chten. Sie k?nnen jetzt den Debugger ausführen, indem Sie auf der Registerkarte Tools auf Debuggen klicken.
Klicken Sie nach dem ?ffnen der Quelldatei auf die Schaltfl?che "Debuggen" in der Symbolleiste, um das Debuggen zu starten. Es wird die Anwendung im Browser ge?ffnet, und wenn die Option "Erstzeile stoppen" im Optionsfenster aktiviert wurde, wird die Ausführung von PHP in der ersten Zeile der Datei durchgeführt. Andernfalls l?uft es, bis der erste Haltepunkt auftritt. Von dort aus k?nnen Sie die Schaltfl?che Weiter mit dem n?chsten Haltepunkt fortsetzen. Bitte beachten Sie, dass der Parameter xDebug_Session_Start in der Browser -URL -Leiste. Um den Debugger auszul?sen, muss XDEBUG_Session_Start als Anforderungsparameter (GET/Post) oder xDebug_Session als Cookie -Parameter übergeben werden. Es gibt einige andere nützliche Operationen in der Debug -Symbolleiste. Sie sind:
- Schritt für Schritt - überspringen Sie die aktuell ausführende Zeile
- Einschritt in die Funktion (für nicht gebaute Funktionen)
- Einzelschritt-springen Sie aus der aktuellen Funktion
Sie k?nnen einen Haltepunkt hinzufügen, indem Sie auf die Zeilennummer im Editor -Rand klicken und anschlie?end die Ausführung am Haltepunkt pausieren. Sie k?nnen gel?scht werden, indem sie erneut klicken. Oder gehen Sie zum Fenster> Debugg> Breakpoints, in dem alle Haltepunkte im Programm aufgeführt sind. Sie k?nnen nur Breakpoints ausw?hlen/deaktivieren, die Sie ben?tigen. Zur Laufzeit wird der Status der Variablen im aktuellen Bereich im Fenster Variablen angezeigt. Es werden die Werte lokaler Variablen und super globaler Variablen wie $_COOKIE
, $_GET
, $_POST
, $_SERVER
und
Leistungsanalyse
Leistungsanalyse ist der erste Schritt bei der Optimierung einer Anwendung. Leistungsanalyse -Tools zeichnen wichtige Details auf, z. B. die Zeit, die für Aussagen und Funktionen erforderlich ist, die Anzahl der Anrufe usw. Die Ausgabe kann analysiert werden, um zu verstehen, wo der Engpass liegt. XDEBUG kann auch als Leistungsanalyse -Tool für PHP verwendet werden. Fügen Sie die folgenden Einstellungen zu Php.ini hinzu:
<code>[xdebug] zend_extension="/Applications/MAMP/bin/php5.2/lib/php/extensions/no-debug-non-zts-20060613/xdebug.so" xdebug.remote_enable=1 xdebug.remote_host=localhost xdebug.remote_port=9000</code>
Eigenschaftsanalyse wird standardm??ig in XDEBUG deaktiviert, sodass xdebug.profiler_enable
verwendet wird, um sie zu aktivieren. xdebug.profiler_output_name
ist der Dateiname des Leistungsanalysatorprotokolls (der %t
-Plendierer findet den Zeitstempel zum Dateinamen an; siehe Dokumentation für eine vollst?ndige Liste von Spezifikatoren). XDEBUG speichert die Leistungsanalyseausgabe im durch xdebug.profiler_output_dir
angegebenen Verzeichnis. Sie k?nnen es in überall, wo Sie ausw?hlen, ?ndern. Denken Sie jedoch daran, dass das Benutzerkonto, das das PHP -Skript ausführt, Schreibberechtigungen darauf haben muss. Die Leistungsanalyse kann die Leistung beeintr?chtigen, da die PHP -Engine jeden Funktionsaufruf anzeigen und seine Details aufzeichnen muss, sodass Sie sie nicht st?ndig ausführen m?chten. xdebug.profiler_enable_trigger
weist xDebug an, die Leistungsanalyse nur durchzuführen, wenn xDebug_profile als GET- oder Post -Parameter übergeben wird. Die Gr??e der von XDebug erstellten Protokolldateien kann je nach Betrieb der Anwendung variieren. Au?erdem ist es nicht wirklich einfach zu lesen. Sie müssen Programme wie Kcachegrind oder Webgrind verwenden, um sie anzuzeigen. KCacheGrind ist das KDE-Tool zur Datenvisualisierung von Leistungsanalyse, für das eine Unix-Umgebung ausgeführt werden muss, und Webgrind ist ein webbasiertes Tool. Das ?ffnen der Leistungsanalyseprotokolldatei in KCacheGrind zeigt die Kosten für jeden Funktionsaufruf von Main () an. Das Folgende ist eine KCACHEGRIND Visualisierung der Leistungsanalyseausgabe der faktoriellen Funktion:
Das linke Bedienfeld (Funktionsübersicht) zeigt die für jede Funktion aufgewendete Zeit in der Reihenfolge der Ausführung an. Das Feld in der oberen rechten Ecke zeigt die gleichen Informationen grafisch an, wobei die Gr??e den Kosten der Funktion entspricht. Anrufdiagramme stellen die Beziehung zwischen Funktionen in der Anwendung dar. In diesem Beispiel gibt es nur zwei Funktionen, main () und fact (). FACT () ist eine rekursive Funktion, die durch eine Schleife in der Abbildung dargestellt wird. Wenn Sie Ihren Code optimieren, sollten Sie den Bereich mit den h?chsten Gesamtkosten suchen. Normalerweise ist der E/A -Betrieb der teuerste. Denken Sie daran, sie so weit wie m?glich zu minimieren. Faules Laden von Dateien überall, überall aussagekr?ftig. Angenommen, Sie haben eine Klasse mit dem Namen Bestellungen, die Ihnen eine Liste aller Bestellungen und ihrer Details aus Ihrem Online -Shop erhalten.
<code>xdebug.profiler_enable = 1 xdebug.profiler_output_name = xdebug.out.%t xdebug.profiler_output_dir = /tmp xdebug.profiler_enable_trigger = 1</code>
Diese Klasse hat zwei Methoden: getAll () und getDetails (). Wenn Sie die GetAll () -Methode anrufen, werden alle Datens?tze in der Bestellentabelle erhalten und sie durchlaufen, um die Details aller Datens?tze zu erhalten. Schauen wir uns die Informationen zur Leistungsanalyse an.
Obwohl absolute Zahlen keine Rolle spielen, da sie von den Plattform- und Laufzeitbedingungen abh?ngen, werden Sie die relativen Kosten verschiedener Funktionen verstehen. Beachten Sie, dass einige Funktionen Hunderte Male genannt werden (was natürlich schlecht ist). Der Code muss nicht alle Bestellungen durchlaufen und die Details jeder Bestellung separat abrufen. Lassen Sie uns die Funktion getAll () überschreiben, um Join zu verwenden.
<?php class Orders { protected $db; public function __construct(PDO $db) { $this->db = $db; } public function getAll() { $orders = array(); $query = "SELECT * FROM orders"; $result = $this->db->query($query); while ($row = $result->fetch(PDO::FETCH_ASSOC)) { $row['details'] = $this->getDetails($row['orderId']); $orders[] = $row; } return $orders; } public function getDetails($orderId){ $details = array(); $result = $this->db->query("SELECT * FROM orderdetails WHERE orderId = " . $orderId); while ($row = $result->fetch(PDO::FETCH_ASSOC)) { $details[] = $row; } return $details; } }
Leistungsanalyse führt jetzt zu besseren Ergebnissen, da die Anzahl der Abfragen verringert wird. Darüber hinaus ruft der Code die Funktion getDetails () nicht mehr auf.
Zusammenfassung
xDebug fungiert als Vermittler und kontrolliert die Ausführung von PHP -Programmen auf dem Server. In diesem Artikel haben Sie zwei der beeindruckendsten Funktionen von XDEBUG -Unterstützung und Leistungsanalyseunterstützung gesehen. Mit dem Remote -Debugging k?nnen Sie die Werte zur Laufzeit überprüfen, ohne das Programm zu ?ndern, wodurch Sie besser verstehen, wie PHP ausgeführt wird. Die Leistungsanalyse identifiziert Engp?sse in Ihrem Code, damit Sie diese für die Leistung optimieren k?nnen. Ich hoffe, dieser Artikel hilft Ihnen, die Vorteile von XDebug zu verstehen, und ermutigt Sie, ihn sofort zu verwenden (wenn Sie ihn noch nicht benutzt haben). Wenn Sie dies als wertvolles Instrument finden, m?chten Sie m?glicherweise sogar in Betracht ziehen, dieses gro?artige Projekt durch den Kauf einer Supportvereinbarung zu unterstützen.
(Bitte beachten Sie: Der obige Bildplatzhalter muss durch den tats?chlichen Screenshot ersetzt werden.)
Das obige ist der detaillierte Inhalt vonPHP Master | Debugging und Profiling PHP mit XDEBUG. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Hei?e Themen





Um zwei PHP -Arrays zusammenzuführen und eindeutige Werte zu behalten, gibt es zwei Hauptmethoden. 1. Verwenden Sie für Index -Arrays oder nur Deduplizierung Array_merge und Array_unique -Kombinationen: Zuerst merge array_merge ($ array1, $ array2) und verwenden Sie dann Array_unique (), um sie endgültig zu erhalten, um ein neues Array zu erhalten, das alle eindeutigen Werte enth?lt. 2. Verwenden Sie für assoziative Arrays und m?chten im ersten Array Schlüsselwertepaare beibehalten: $ result = $ array1 $ array2, was sicherstellt, dass die Schlüssel im ersten Array vom zweiten Array nicht überschrieben werden. Diese beiden Methoden gelten für verschiedene Szenarien, je nachdem, ob der Schlüsselname beibehalten wird oder nur der Fokus liegt

Um die St?rke des Kennworts zu bestimmen, muss die regelm??ige und logische Verarbeitung kombiniert werden. Die grundlegenden Anforderungen umfassen: 1. Die L?nge betr?gt mindestens 8 Ziffern; 2. Enthaltende Kleinbuchstaben, Gro?buchstaben und Zahlen; 3.. Spezielle Charakterbeschr?nkungen k?nnen hinzugefügt werden; In Bezug auf fortgeschrittene Aspekte müssen eine kontinuierliche Vervielf?ltigung von Zeichen und inkrementelle/abnehmende Sequenzen vermieden werden, was eine PHP -Funktionserkennung erfordert. Gleichzeitig sollten Blacklists vorgestellt werden, um gemeinsame schwache Passw?rter wie Passwort und 123456 zu filtern. Schlie?lich wird empfohlen, die ZXCVBN -Bibliothek zu kombinieren, um die Bewertungsgenauigkeit zu verbessern.

Um PHP -Datei -Uploads sicher zu verarbeiten, müssen Sie die Quelle und die Type und die Eingabe des Dateinamens und des Pfades überprüfen, Serverbeschr?nkungen festlegen und Mediendateien zweimal verarbeiten. 1. überprüfen Sie die Upload -Quelle, um CSRF durch Token zu verhindern, und erkennen Sie den realen MIME -Typ über die Finfo_file mithilfe der Whitelist -Steuerung. 2. Benennen Sie die Datei in eine zuf?llige Zeichenfolge um und bestimmen Sie die Erweiterung, um sie gem?? dem Erkennungstyp in einem Verzeichnis ohne Web zu speichern. 3. Die PHP -Konfiguration begrenzt die Hochladengr??e und das tempor?re Verzeichnis Nginx/Apache verbietet den Zugriff auf das Upload -Verzeichnis. 4. Die GD -Bibliothek stellt die Bilder neu, um potenzielle b?swillige Daten zu l?schen.

H?ufige Probleme und L?sungen für den variablen PHP -Umfang umfassen: 1. Die globale Variable kann innerhalb der Funktion nicht zugegriffen werden, und sie muss bei der Verwendung des globalen Schlüsselworts oder Parameters übergeben werden. 2. Die statische Variable wird statisch deklariert und nur einmal initialisiert und der Wert wird zwischen mehreren Aufrufen beibehalten. 3.. Hyperglobale Variablen wie $ _get und $ _post k?nnen direkt in jedem Bereich verwendet werden, aber Sie müssen auf eine sichere Filterung achten. 4. Die anonymen Funktionen müssen über das Schlüsselwort verwenden, und wenn Sie externe Variablen ?ndern, müssen Sie eine Referenz übergeben. Das Beherrschen dieser Regeln kann dazu beitragen, Fehler zu vermeiden und die Code -Stabilit?t zu verbessern.

Es gibt drei g?ngige Methoden für den PHP -Kommentarcode: 1. Verwenden Sie // oder #, um eine Codezeile zu blockieren, und es wird empfohlen, // zu verwenden. 2. Verwenden Sie /.../, um Codebl?cke mit mehreren Zeilen zu wickeln, die nicht verschachtelt werden k?nnen, aber gekreuzt werden k?nnen. 3.. Kombinationskenntnisse Kommentare wie die Verwendung / if () {} / Um Logikbl?cke zu steuern oder um die Effizienz mit Editor -Verknüpfungsschlüssel zu verbessern, sollten Sie auf die Schlie?ung von Symbolen achten und das Verschachteln bei der Verwendung vermeiden.

Der Schlüssel zum Schreiben von PHP -Kommentaren liegt in der Kl?rung des Zwecks und der Spezifikationen. Kommentare sollten "Warum" und nicht "was getan" erkl?ren, um Redundanz oder zu Einfachheit zu vermeiden. 1. Verwenden Sie ein einheitliches Format wie Docblock (/*/) für Klassen- und Methodenbeschreibungen, um die Lesbarkeit und die Kompatibilit?t der Werkzeuge zu verbessern. 2. Betonen Sie die Gründe für die Logik, z. B. warum JS -Sprünge manuell ausgeben müssen. 3. Fügen Sie eine übersichtsbeschreibung vor komplexem Code hinzu, beschreiben Sie den Prozess in Schritten und helfen Sie, die Gesamtidee zu verstehen. V. Gute Anmerkungen k?nnen die Kommunikationskosten senken und die Effizienz der Code -Wartung verbessern.

AgneeratorinphpiSamemory-effizientes WaytoiterateOverlargedatasetsByyieldingValueatimeinsteadofReturningThemallatonce.1.GeneratorsusetheyieldKeywordtoproduktenvaluesonDemand, ReducingMemoryUsage.2.TheyareusefulforfulforfulfordlingBiglopploups, Lesebiglochen, Leselungen, Lesebigs, Leselung, oder

Es gibt zwei M?glichkeiten, ein Array in PHP zu erstellen: Verwenden Sie die Funktion array () oder verwenden Sie Klammern []. 1. Die Verwendung der Funktion array () ist eine traditionelle Art und Weise mit guter Kompatibilit?t. Definieren Sie Indexarrays wie $ fruits = Array ("Apple", "Banana", "Orange") und assoziative Arrays wie $ user = array ("name" => "John", "Age" => 25); 2. Die Verwendung [] ist eine einfachere M?glichkeit, seit Php5.4 wie $ Color zu unterstützen
