mysqli_dump_debug_info
Erfahren Sie, wie mysqli_dump_debug_info() Debug-Infos der MySQLi-Verbindung ins MySQL-Serverlog schreibt. Syntax, Rückgabewerte und Beispiele.
Die PHP-Funktion mysqli_dump_debug_info() schreibt Low-Level-Debugging-Informationen über eine MySQLi-Verbindung in das Fehlerprotokoll des MySQL-Servers. Diese Seite erklärt, was die Funktion tut, wann sie tatsächlich nützlich ist, ihre Syntax in prozeduralem und objektorientiertem Stil sowie wie die erzeugte Ausgabe zu lesen ist.
Was mysqli_dump_debug_info() tut
mysqli_dump_debug_info() fordert die zugrunde liegende MySQL-Client-Bibliothek auf, interne Verbindungsstatusinformationen in die Protokolldatei des Servers zu schreiben. Die Art der Details, die dabei ausgegeben werden — offene Tabellen, gecachte Objekte, Speichernutzung der Verbindung — ist für die Entwickler von MySQL selbst gedacht, nicht für das alltägliche Anwendungs-Debugging. In der Praxis greift man nur dann auf diese Funktion zurück, wenn man ein schwer reproduzierbares Problem auf Treiber-Ebene verfolgt.
Die Funktion nimmt ein einziges Argument entgegen, die MySQLi-Verbindung, und gibt einen boolean zurück: true bei Erfolg und false bei Misserfolg. Sie gibt den Debug-Text nicht an das Skript zurück; die Informationen werden direkt in das Serverlog geschrieben (der Speicherort hängt von der MySQL-Konfiguration ab, oft etwa /var/log/mysql/error.log).
Syntax
Es gibt zwei gleichwertige Schreibweisen, da jede MySQLi-Funktion sowohl als prozedurale Funktion als auch als Objektmethode verfügbar ist.
// Procedural style
mysqli_dump_debug_info(mysqli $mysql): bool
// Object-oriented style
$mysqli->dump_debug_info(): bool| Parameter | Beschreibung |
|---|---|
$mysql | Ein Verbindungsobjekt, das von mysqli_connect() zurückgegeben wird. Im prozeduralen Stil erforderlich. |
Der Rückgabewert ist true, wenn die Anforderung zum Schreiben der Informationen erfolgreich war, andernfalls false.
Prozedurales Beispiel
Das folgende Beispiel öffnet eine Verbindung, fordert einen Debug-Dump an und gibt an, ob die Anforderung erfolgreich war. Ersetzen Sie die Zugangsdaten durch Ihre eigenen, um es gegen einen echten Server auszuführen.
Debug-Infos ausgeben (prozedural)
<?php
// Throw exceptions instead of warnings on connection errors
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = mysqli_connect("localhost", "user", "password", "my_database");
// Ask the client library to write debug info to the MySQL server log
if (mysqli_dump_debug_info($mysqli)) {
echo "Debug information was dumped to the server log.\n";
} else {
echo "Could not dump debug information.\n";
}
mysqli_close($mysqli);
?>Öffnen Sie nach der Ausführung das Fehlerprotokoll des MySQL-Servers, um den Dump zu lesen. Die Funktion selbst teilt Ihnen lediglich mit, ob die Anforderung akzeptiert wurde — der eigentliche Diagnosetext befindet sich im Protokoll.
Objektorientiertes Beispiel
Wenn Sie die objektorientierte MySQLi-API bevorzugen, rufen Sie dump_debug_info() direkt am Verbindungsobjekt auf.
Debug-Infos ausgeben (objektorientiert)
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli("localhost", "user", "password", "my_database");
if ($mysqli->dump_debug_info()) {
echo "Debug information was dumped to the server log.\n";
} else {
echo "Could not dump debug information.\n";
}
$mysqli->close();
?>Beide Stile tun genau dasselbe; wählen Sie den Stil, der zum Rest Ihrer Codebasis passt.
Wann verwenden (und wann nicht)
Greifen Sie auf mysqli_dump_debug_info() nur dann zurück, wenn Sie ein Problem innerhalb der MySQL-Verbindungsschicht selbst vermuten — zum Beispiel undichte Prepared Statements oder unerwartetes Speicherwachstum bei einer langlebigen Verbindung. Für das gewöhnliche Anwendungs-Debugging möchten Sie fast immer etwas Gezielteresres verwenden:
- Um die Fehlermeldung des letzten fehlgeschlagenen MySQLi-Aufrufs zu lesen, verwenden Sie
mysqli_error(). - Um den Zustand und die Statistiken einer Verbindung zu prüfen, verwenden Sie
mysqli_get_connection_stats()oder überprüfen Sie den Verbindungsstatus. - Einen umfassenderen Überblick über die Erweiterung finden Sie im Kapitel PHP MySQLi.
Hinweis: Die Funktion schreibt nur dann in das Serverlog, wenn der MySQL-Server mit Debugging-Unterstützung kompiliert wurde und so konfiguriert ist, dass er dies akzeptiert. Bei einem Standard-Produktions-Build tut sie möglicherweise still und leise nichts Nützliches, was ein weiterer Grund ist, warum es sich um ein Spezialwerkzeug und kein alltägliches handelt.
Fazit
mysqli_dump_debug_info() ist eine eng gefasste, Low-Level-Diagnose, die interne MySQLi-Verbindungsdetails in das MySQL-Serverlog schreibt und einen boolean zurückgibt, der angibt, ob die Anforderung erfolgreich war. Sie ist wertvoll für Untersuchungen auf Treiber-Ebene, aber selten das richtige Werkzeug für die alltägliche Arbeit — verwenden Sie dafür lieber mysqli_error(), Verbindungsstatistiken oder PHPs eigenes Fehlerlogging.