W3docs

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
ParameterBeschreibung
$mysqlEin 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:

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.

Übung

Übung
Was gibt die PHP-Funktion mysqli_dump_debug_info() zurück?
Was gibt die PHP-Funktion mysqli_dump_debug_info() zurück?
Was this page helpful?