MySQLI :: Debug () ist ein relativ nutzloses, aber sehr starkes Debugging -Tool in PHP. Es ermöglicht Entwicklern, die Debugging -Funktion der zugrunde liegenden MySQLI -Erweiterung zu ermöglichen und damit Details in Verbindungen, Abfrageausführung usw. zu analysieren. Nach Php 8.1 ist die Parameterunterstützung von MySQLI :: Debugug () flexibler, insbesondere die Spurenoptionen , die Entwicklern stärkere Anpassungsfähigkeiten bieten.
In diesem Artikel wird die Konfiguration von MySQLI :: Debug () Trace -Optionen verwendet und erweitert und einige Beispiele kombiniert, um den Zweck besser zu verstehen.
Mysqli :: debug () ist eine Methode, mit der Debug-Ausgabe aktiviert wurde. Es handelt sich tatsächlich um eine objektorientierte Version der Funktion mySQLI_Debug () . Es akzeptiert einen String -Parameter, der Debugging -Optionen angibt.
mysqli::debug(string $options): bool
Unter ihnen ist $ option im Mittelpunkt, auf das wir uns konzentrieren möchten - eine Reihe von von Kommas getrennten Debug -Einstellungen, wie z. B.:
mysqli::debug("d:t:o,/tmp/client.trace")
Zu den Debug -Zeichenfolgen gehören mehrere gängige Optionen:
Debugging lenken
Haltbare Spur (Spur)
o, <Datei> Schreiben Sie die Debug -Ausgabe in die angegebene Datei
I, <Datei> Konfiguration aus der angegebenen Datei lesen
F Datensatzfunktionsaufruf
A Aufzeichnungen Alle Anrufe (mehr ausführlicher)
n Zeigen Sie Inhalte für Netzwerkkommunikation
Sie können diese Optionen kombinieren, um eine detaillierte Überwachung der MySQLI -Ausführung zu ermöglichen.
Angenommen, Sie möchten Debug -Informationen auf das /TMP -Verzeichnis des Servers protokollieren:
<?php
mysqli::debug("d:t:o,/tmp/mysqli.trace.log");
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_error) {
die("Verbindung ist fehlgeschlagen: " . $mysqli->connect_error);
}
$result = $mysqli->query("SELECT * FROM users");
while ($row = $result->fetch_assoc()) {
print_r($row);
}
$mysqli->close();
?>
Diese Konfiguration wird:
Aktivieren Sie Debugging ( D )
Aktivieren Sie die Tracking -Funktion ( t )
Speichern Sie die Ausgabe auf /tmp/mysqli.trace.log
mysqli::debug("d:t:F:o,/tmp/trace_func.log");
Wenn der F -Parameter aktiviert ist, enthält das Protokoll für jede MySQLI -Funktion einen Aufrufstapel, der insbesondere für die Analyse von Leistungs Engpässen nützlich ist.
Sie können Debug -Parameter im Voraus festlegen, indem Sie die Konfigurationsdatei lesen:
// config.txt Inhalt:d:t:o,/tmp/from_config.log
mysqli::debug("i,/var/www/html/config.txt");
Dies vermeidet harte Codierung, erhöht die Flexibilität und eignet sich für große Projekte oder Debugg -Bereitstellungsumgebungen.
Wenn Sie vermuten, dass mit der Kommunikation zwischen dem Client und dem Server etwas nicht stimmt, können Sie N aktivieren:
mysqli::debug("d:t:n:o,/tmp/net_debug.log");
Bitte beachten Sie: Die von dieser Option generierten Protokolle können sensible Daten enthalten und sollten streng geschützt sein.
Nachdem das Debug -Protokoll generiert wurde, können Sie es über den folgenden Befehl anzeigen:
tail -f /tmp/mysqli.trace.log
Bei Verwendung in Produktionsumgebungen wird empfohlen, den Log -Dateipfad durch ein dediziertes Protokollverzeichnis zu ersetzen und die entsprechenden Berechtigungen festzulegen.
In Kombination mit Front-End-URLs können Sie sogar Protokolle mit Trace-ID in Verbindung bringen, z. B.:
$traceId = uniqid("trace_", true);
mysqli::debug("d:t:o,/tmp/$traceId.log");
header("X-Debug-Trace: https://m66.net/debug/$traceId.log");
Auf diese Weise können Sie Verfolgung von Links in den Browser -Entwickler -Tools erhalten und schnell Probleme finden.
Die Trace -Optionen von MySQLI :: Debug () bieten Entwicklern leistungsstarke Debugging -Methoden. Durch die Konfiguration der Trace -Zeichenfolge können Sie erreichen:
Funktionsaufrufanalyse
Netzwerkdebugging
Zentrales Protokollmanagement
Kombiniert mit der Skalierbarkeit von Konfigurationsdateien
Während der Entwicklungs- und Testphase sparen Sie diese Trace -Optionen, die diese Trace -Optionen nutzen, nicht nur eine Menge Fehlerbehebung, sondern hilft Ihnen auch, den Interaktionsmechanismus zwischen PHP und MySQL tiefer zu verstehen.