Aktueller Standort: Startseite> Neueste Artikel> So verwenden Sie MySQLI :: Debugg, um Datenbank -Timeout -Probleme zu analysieren

So verwenden Sie MySQLI :: Debugg, um Datenbank -Timeout -Probleme zu analysieren

M66 2025-05-17

Bei der täglichen PHP -Entwicklung sind Datenbankleistungsprobleme häufig am problematischsten, insbesondere die zeitweiligen Zeitlimitprobleme, die es den Entwicklern häufig erschweren, sich schnell zu lokalisieren. Glücklicherweise bietet die MySQLI -Erweiterung von PHP ein leistungsstarkes Tool - MySQLI :: Debug , das uns helfen kann, detaillierte Datenbankbetriebsprotokolle aufzuzeichnen, wodurch langsame Abfrage- oder Verbindungsprobleme analysiert werden und schnell Leistungsengpässe finden.

1. Was ist Mysqli :: Debugg ?

Mysqli :: Debug ist eine Methode in der MySQLI -Klasse, die die Debug -Protokollierung ermöglicht. Diese Methode zeichnet in einer Protokolldatei in verwandte MySQL -Client -Operationen auf und hilft bei der Fehlerbehebung von Ausnahmen oder Leistungsproblemen während der Verbindung, der SQL -Ausführung.

 mysqli::debug(string $debug_options): bool

Diese Methode wird normalerweise vor einer Datenbankverbindung aufgerufen und erfordert, dass der MySQLND -Treiber zur PHP -Kompilierungszeit aktiviert ist und das Debugging zulässt.

2. Voraussetzungen für die Ermöglichung des Debuggens

Um MySQLI :: Debug zu verwenden, müssen Sie sicherstellen, dass Sie sicherstellen:

  1. PHP verwendet MySQLND -Treiber <br> Sie können bestätigen, indem Sie phpinfo () betrachten:

     phpinfo();
    

    Suchen Sie nach MySQLND , wenn Sie die folgenden Wörter sehen, bedeutet dies, dass Sie aktiviert haben:

     Client API library version => mysqlnd 8.x.x
    
  2. Ändern Sie die Konfiguration von Php.ini, um das Debugging zu aktivieren

     mysqlnd.debug = "/tmp/mysqlnd.log"
    

    Starten Sie nach der Änderung den PHP-FPM- oder Apache-Dienst neu.

3. Wie kann ich MySQLI :: Debug verwenden?

Rufen Sie in Ihrem PHP -Skript MySQLI :: Debug () auf und erstellen Sie dann die Datenbankverbindung und führen Sie die Abfrage normal aus. Zum Beispiel:

 <?php

// Aktivieren Sie die Debug -Protokollierung
mysqli::debug("d:t:o,/tmp/mysqlnd.log");

// Datenbankverbindung
$mysqli = new mysqli("localhost", "db_user", "db_pass", "db_name");

if ($mysqli->connect_errno) {
    echo "Verbindung ist fehlgeschlagen: " . $mysqli->connect_error;
    exit();
}

// Eine Frage ausführen
$result = $mysqli->query("SELECT * FROM users WHERE status = 'active'");

while ($row = $result->fetch_assoc()) {
    echo $row['username'] . "<br>";
}

$mysqli->close();
?>

In:

  • Debugging lenken

  • Tadd Timestamp

  • o,/tmp/mysqlnd.log gibt die Ausgabedatei an

4. Analysieren Sie das Debug -Protokoll

Das Debug -Protokoll wird an den von Ihnen angegebenen Speicherort ausgegeben (z .

 tail -f /tmp/mysqlnd.log

Gemeinsame Analysepunkte umfassen:

  • Verbraucht sich die Verbindungszeit?

  • Ob die Anweisung für Abfragen wiederholt ausgeführt wird

  • Abfrage Wenn ein Cache -Treffer vorliegt

  • Langsame Abfrage braucht Zeit

Mit der Analyse von SQL -Anweisungen können Sie genauer bestimmen, ob Sie den Index optimieren oder die volle Tabellenscannung vermeiden müssen.

5. Weitere Positionierung in Kombination mit langsamen Abfrageprotokollen

Obwohl MySQLI :: Debug reichhaltige Kundeninformationen liefert, erfordert eine tiefere langsame Abfrageanalyse auch MySQLs eigenes langsames Abfrageprotokoll:

 SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 1;

Langsame Abfrageprotokolle in Kombination mit MySQLI :: Debugs Kundenprotokollen können in Zusammenarbeit von beiden Enden analysiert werden, um Engpässe schnell zu finden.

6. Schließendes Debuggen nach dem Debuggen abgeschlossen ist

Aus Leistung und Sicherheitsgründen sollte das Debuggen in der Entwicklung oder in Testumgebungen verwendet werden. Denken Sie daran, es nach dem Debuggen zu schließen:

 mysqli::debug(""); // Löschen Sie die Debugging -Parameter, die dem Herunterfahren entsprechen

7. Zusammenfassung

Durch MySQLI :: Debug können wir den Interaktionsprozess zwischen PHP -Skripten und MySQL genau aufzeichnen und analysieren, was für die Behandlung von Datenbankverbindungsproblemen, intermittierende Zeitüberschreitungen und langsame Analysen von Abfragen von großem Wert ist. Wenn Sie dieses Tool während der Entwicklungsphase gut nutzen, kann die Wahrscheinlichkeit, dass Sie nach dem Start der Mine "auf die Mine treten", erheblich verringern.