Ein PHP-Skript profilieren

Subodh Poudel 21 Juni 2022
Ein PHP-Skript profilieren

Dieser Artikel führt Sie durch den Prozess der Profilerstellung eines PHP-Skripts mit Xdebug.

Verwenden Sie Xdebug, um ein Skript in PHP zu profilieren

Xdebug ist ein beliebtes PHP-Tool zum Debuggen und Profilieren des PHP-Skripts. Das Profilieren eines Skripts bedeutet, den Code zu analysieren, um sicherzustellen, dass er optimiert ist und eine hohe Leistung aufweist.

Die Profilerstellung liefert Informationen über die CPU-, Speicher- und Netzwerkauslastung des Programms. Die folgenden Abschnitte zeigen, wie Sie die Profilerstellungsumgebung einrichten und ein Beispielskript in PHP profilieren.

Installieren Sie das Xdebug-Tool

Der erste Schritt besteht darin, das Xdebug-Tool herunterzuladen. Aktualisieren Sie zunächst Ihr System mit dem folgenden Befehl.

sudo apt-get update

Verwenden Sie nach dem Aktualisieren der lokalen Pakete den folgenden Befehl im Terminal, um das Xdebug-Tool zu installieren.

sudo apt-get install php-xdebug

Navigieren Sie als nächstes zum Pfad /etc/php/8.1/mods-available/xdebug.ini und öffnen Sie die Datei xdebug.ini. 8.1 ist hier die PHP-Version des im Tutorial verwendeten Systems.

Sie kann von Benutzer zu Benutzer variieren. Fügen Sie die folgenden Zeilen in der Datei xdebug.ini hinzu.

zend_extension=/usr/lib/php/20210902/xdebug.so
xdebug.remote_autostart = 1
xdebug.remote_enable = 1
xdebug.remote_handler = dbgp
xdebug.remote_host = 127.0.0.1
xdebug.remote_log = /tmp/xdebug_remote.log
xdebug.remote_mode = req
xdebug.remote_port = 9005

Dabei kann das Verzeichnis 20210902 im Pfad /usr/lib/php/20210902/xdebug.so für den Wert der Eigenschaft zend_extension von System zu System unterschiedlich sein. Navigieren Sie zum Pfad und verwenden Sie den korrekten Verzeichnisnamen für den Wert der Eigenschaft zend_extension.

Starten Sie als Nächstes den Webserver mit den folgenden Befehlen neu, wenn der Webserver Apache ist.

sudo systemctl restart apache2
sudo /etc/init.d/apache2 restart

Verwenden Sie für nginx den folgenden Befehl.

sudo systemctl restart nginx

Schließlich wird xdebug im System installiert.

Konfigurieren Sie php.ini für die Verwendung von Xdebug

Wir können die Installation von Xdebug in PHP überprüfen, indem wir uns die Ausgabe der Funktion phpinfo() ansehen. Aber das Tool ist noch nicht einsatzbereit.

Wir müssen es in der Datei php.ini konfigurieren. Navigieren Sie dazu zur Datei php.ini und öffnen Sie diese mit einem Texteditor.

Den Pfad der Datei finden wir in der Ausgabe phpinfo(). Ab dem aktuellen System liegt die Datei im Pfad /etc/php/8.1/apache2/php.ini.

Fügen Sie in der Datei php.ini am Ende der Datei die folgende Zeile hinzu.

[xdebug]
zend_extension=/usr/lib/php/20210902/xdebug.so
xdebug.show_local_vars=1

Benennen Sie das Verzeichnis 20210902 mit dem in Ihrem System verwendeten Verzeichnis um. Setzen Sie als nächstes die Eigenschaften display_errors und display_startup_errors auf On und speichern Sie die Datei.

Starten Sie den Webserver erneut neu. Jetzt ist Xdebug einsatzbereit.

Profilieren eines PHP-Skripts

Der letzte Schritt besteht darin, ein PHP-Skript zu profilieren. Wir müssen einige PHP-Codes schreiben, um es zu profilieren.

Erstellen Sie beispielsweise vier Variablen $a, $b, $c und $d. Weisen Sie in $a und $b einen Integer-Wert 5 und einen String-Wert '5' zu.

Weisen Sie in ähnlicher Weise die Arrays array(5) und array('5') in $c und $d zu.

Verwenden Sie als nächstes die Funktion var_dump(), um alle vier Variablen zu sichern. Zum Schluss noch einmal eine Variable $v ausgeben.

Beachten Sie, dass wir keine Variable namens $v erstellt haben.

Beispielcode:

$a=5;
$b='5';
$c=array(5);
$d=array('5');

var_dump($a);
var_dump($b);
var_dump($c);
var_dump($d);

var_dump($v);

Ausgabe:

Profilieren eines PHP-Skripts

Im Ausgabebereich wird das PHP-Skript profiliert. Der fehlerhafte Abschnitt des Codes wird hervorgehoben.

Es zeigt die Informationen wie Call Stack, wo die Informationen über Zeit, Speicher, Funktion und Ort bereitgestellt werden. In ähnlicher Weise werden auch die Informationen über die Variable im lokalen Gültigkeitsbereich angegeben.

Auf diese Weise können wir Xdebug verwenden, um ein PHP-Skript zu profilieren.

Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn