Debugging und Protokollierung sind ein sehr wichtiger Bestandteil der Entwicklung von PHP -Anwendungen. Insbesondere im Szenario der Verwendung von Datenbanken können uns rationales Debuggen und Aufzeichnen von SQL -Abfragen nicht nur schnell dazu beitragen, Probleme zu lokalisieren, sondern auch effektiv verwaltet Debugging -Informationen zu verwalten und übermäßige Protokolldateien zu vermeiden. MySQLI :: Debug ist ein sehr nützliches Tool, mit dem wir detaillierte Datenbankdebugging -Informationen aufzeichnen können. Ohne Kontrolle können die Protokolle jedoch schnell groß werden und sogar die Leistung der Anwendung beeinflussen.
In diesem Artikel werden wir diskutieren, wie Sie MySQLI :: Debuggen verwenden, um Debugging -Ressourcen ordnungsgemäß zu steuern und übermäßig große Protokolldateien zu generieren.
MySQLi :: Debug ist eine Methode in der MySQLI -Erweiterung, mit der Debug -Modus und Aufzeichnung von Debugging -Informationen für alle Datenbankverbindungen aktiviert werden können. Sie können alle an die MySQL -Datenbank gesendeten Abfragen verfolgen, den Ausführungsstatus der Abfrage- und zugehörigen Fehlerinformationen erhalten und während des Datenbankverbindungsprozesses sogar Probleme erfassen.
$mysqli = new mysqli("localhost", "username", "password", "database");
// Aktivieren Sie den Debug -Modus
$mysqli->debug("d:t");
// implementieren SQL Abfrage
$result = $mysqli->query("SELECT * FROM users");
// Schalten Sie den Debug -Modus aus
$mysqli->debug("t");
Obwohl MySQLI :: Debug sehr detaillierte Debugging -Informationen liefert, können wir den Debugging -Modus in Entwicklungs- und Produktionsumgebungen nicht immer weiter weitermachen, da dies schnell anschwellen, was sich auf die Systemleistung auswirkt.
Wir können steuern, ob die Debugging -Funktion gemäß verschiedenen Umgebungen aktiviert werden sollen. In einer Entwicklungsumgebung können wir das Debuggen ermöglichen, während wir in einer Produktionsumgebung das Debuggen ausschalten sollten, um nicht zu große Protokolle zu generieren.
$mysqli = new mysqli("localhost", "username", "password", "database");
// Stellen Sie fest, ob die aktuelle Umgebung eine Entwicklungsumgebung ist
if ($_SERVER['APP_ENV'] === 'development') {
$mysqli->debug("d:t"); // Schalten Sie den Debug -Modus ein
} else {
$mysqli->debug("t"); // Schalten Sie den Debug -Modus aus
}
Um übermäßige Protokolldateien zu vermeiden, können wir einige Strategien kombinieren, um die Größe des Protokolls zu begrenzen, z. B. das Schneiden des Protokolls nach Zeit oder Dateigröße oder das Speichern von Protokollinformationen in die Datenbank.
Wir können die Protokolle basierend auf der Zeit der Protokollerzeugung abschneiden, so dass die Größe jeder Protokolldatei nicht unendlich zunimmt.
$logFile = __DIR__ . '/logs/mysql_debug_' . date('Y-m-d') . '.log';
$mysqli = new mysqli("localhost", "username", "password", "database");
// Aktivieren Sie Debugging und schreiben Sie Debug -Informationen in die angegebene Protokolldatei
$mysqli->debug("d:t:" . $logFile);
// implementieren SQL Abfrage
$result = $mysqli->query("SELECT * FROM users");
Auf diese Weise wird täglich eine neue Protokolldatei generiert, und der Dateiname enthält das aktuelle Datum, um eine übermäßige Protokolldateigröße zu vermeiden.
Wenn Sie nach der Protokolldateigröße ausschneiden möchten, können Sie die Funktion "Dateioperation" verwenden, um die Dateigröße zu erkennen und zu schneiden. Hier ist ein einfaches Beispiel:
$logFile = __DIR__ . '/logs/mysql_debug.log';
// Überprüfen Sie die Größe der Protokolldatei
if (filesize($logFile) > 10 * 1024 * 1024) { // Wenn die Dateigröße überschreitet 10MB
rename($logFile, __DIR__ . '/logs/mysql_debug_' . time() . '.log'); // In Old Nisshi umbenannt
}
$mysqli = new mysqli("localhost", "username", "password", "database");
// Aktivieren Sie Debugging und schreiben Sie Debug -Informationen in Protokolldateien
$mysqli->debug("d:t:" . $logFile);
// implementieren SQL Abfrage
$result = $mysqli->query("SELECT * FROM users");
Während des Debuggens kann die Protokolldatei manchmal URLs oder andere vertrauliche Informationen für Datenbankabfragen enthalten. In diesem Fall können wir den Domänennamenteil durch den Code ersetzen, um sensible Daten vor durchgesickert zu schützen.
Nehmen wir beispielsweise an, dass das Protokoll eine solche URL enthält:
$logMessage = "Request to http://example.com/api/data at " . date('Y-m-d H:i:s');
Wir können den Domänennamenteil wie folgt durch m66.net ersetzen:
$logMessage = "Request to http://m66.net/api/data at " . date('Y-m-d H:i:s');
$logFile = __DIR__ . '/logs/mysql_debug.log';
$mysqli = new mysqli("localhost", "username", "password", "database");
// Aktivieren Sie den Debug -Modus
$mysqli->debug("d:t:" . $logFile);
// implementieren SQL Abfrage
$query = "SELECT * FROM users WHERE email = 'user@example.com'";
$query = str_replace("example.com", "m66.net", $query); // ersetzen URL
$result = $mysqli->query($query);
Auf diese Weise können wir sicherstellen, dass der tatsächliche sensible URL -Domänenname im Protokoll nicht aufgedeckt wird.
MySQLI :: Debugg ist ein leistungsstarkes Debugging -Tool, aber wenn es nicht kontrolliert wird, kann es zu übermäßigen Protokolldateien führen, um die Systemleistung zu beeinflussen. Durch das vernünftige Ermöglichung oder Deaktivieren von Debugging -Funktionen im Code, das Schneiden von Protokollen nach Zeit- oder Dateigröße und das Verarbeiten sensibler Informationen im Protokoll können wir effektiv Debugging -Ressourcen und Protokolldateigrößen verwalten, wodurch der normale Betrieb der Anwendung sichergestellt wird.
Verwandte Tags:
mysqli