Aktueller Standort: Startseite> Neueste Artikel> Verwenden der Richtlinie der Verwendung von MySQLI :: Debugug beim Debuggen von Multi-Database-Verbindungen

Verwenden der Richtlinie der Verwendung von MySQLI :: Debugug beim Debuggen von Multi-Database-Verbindungen

M66 2025-05-13

Debugging -Datenbankvorgänge können bei der PHP -Entwicklung kompliziert werden, insbesondere bei der Behandlung mehrerer Datenbankverbindungen in einer Anwendung. Die MySQLI :: Debug -Methode von PHP ist ein weniger erwähntes, aber sehr nützliches Debugging-Tool, das besonders geeignet ist, Datenbankverbindungen zu analysieren, Anweisungen auszuführen und sogar die zugrunde liegenden Netzwerkaktivitäten anzusehen.

In diesem Artikel wird detailliert eingeführt, wie die MySQLI :: Debug -Methode bei der Debugie mehrerer Datenbankverbindungen effektiv verwendet wird, und sie in Kombination mit Beispielcode zu erklären.

Was ist die MySQLI :: Debug -Methode?

MySQLI :: Debug () ist eine statische Methode in der MySQLI -Erweiterung, mit der Debugging -Informationen an die MySQL -Client -Bibliothek gesendet werden, die hauptsächlich im Entwicklungs- und Debugging -Prozess verwendet wird. Diese Funktion gibt nichts zurück, seine Hauptfunktion besteht darin, Debug -Informationen in die von der Client -Bibliothek konfigurierte Debug -Datei zu schreiben.

Um es zum Laufen zu bringen, muss die Debug -Unterstützung in my.cnf oder my.ini (normalerweise über Debug = D: t: t: t: O,/tmp/client.trace im Client -Abschnitt konfiguriert werden) und dann die Protokollierung mithilfe dieser Methode ausgelöst.

 mysqli::debug("d:t:o,/tmp/client.trace");

Dadurch werden Debug -Informationen auf /tmp/client.trace geschrieben.

Debugging-Strategien unter Multi-Database-Verbindung

Wenn mehrere Datenbanken mit Ihrer Anwendung verbunden sind, wie z. B. der primären Datenbank und mehreren Read -Replikas, muss das Debugging mehr gezielt sein. Hier sind einige empfohlene Strategien.

1. Stellen Sie eine separate Kennung für jede Verbindung ein

Sie können den Datenbankverbindungsprozess zusammenfassen, jeder Verbindung einen Identifikationsnamen hinzufügen und die Quelle im Ausgabeprotokoll unterscheiden.

 function connect_to_db($label, $host, $user, $pass, $db) {
    mysqli::debug("d:t:o,/tmp/{$label}_trace.log"); // Richten Sie die Debug -Datei für jede Verbindung ein
    $conn = new mysqli($host, $user, $pass, $db);
    if ($conn->connect_error) {
        die("Verbindung ist fehlgeschlagen ({$label}): " . $conn->connect_error);
    }
    return $conn;
}

$main_db = connect_to_db("main", "localhost", "root", "password", "main_db");
$replica_db = connect_to_db("replica", "localhost", "root", "password", "replica_db");

2. Verwenden Sie Protokolle, um mit Debugging und Tracking zusammenzuarbeiten

Obwohl MySQLI :: Debugg die zugrunde liegenden Debugging -Informationen ist, kann es einen vollständigen Debugging -Link mit der Protokollausgabe von PHP bilden.

 mysqli::debug("d:t:o,/tmp/replica_trace.log");
$replica_conn = new mysqli("localhost", "user", "pass", "replica_db");

if ($replica_conn->connect_error) {
    error_log("Es gab keine Verbindung zu der Replikatendatenbank herzustellen: " . $replica_conn->connect_error);
} else {
    error_log("Eine erfolgreiche Verbindung zur Replikatabase herstellen: " . $replica_conn->host_info);
}

Sie können wie http://m66.net/log-viewer verwenden, um eine Protokollobjektoberfläche zu erstellen, um schnell Probleme zu finden.

3. Richten Sie einen einheitlichen Eingang ein, um den Debug -Switch zu steuern

In einer Entwicklungs- oder Testumgebung möchten Sie möglicherweise nicht jedes Mal MySQLI :: Debugug anrufen. Zu diesem Zeitpunkt können Sie Umgebungsvariablen oder Konfigurationsdateien verwenden, um zu steuern, ob Debugging aktiviert werden soll.

 if (getenv("DB_DEBUG") === "true") {
    mysqli::debug("d:t:o,/tmp/debug_trace.log");
}

Fügen Sie in die .Env -Datei hinzu:

 DB_DEBUG=true

4. Verwenden Sie MySQLI_Report_all , um eine Fehlerebene zu melden

Die Kombination von mySQLi_Report () kann besser Fehler aufnehmen:

 mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
mysqli::debug("d:t:o,/tmp/debug_trace.log");

$conn = new mysqli("localhost", "user", "pass", "some_db");

Dies wird Ausnahmen anstelle von stillen Fehlern auslösen, sodass Sie Probleme auf der Codeebene leichter verfolgen können.