Bei der Entwicklung von PHP -Anwendungen mit Datenbankinteraktionen ist die Erfassung und Handhabung von Datenbankbetriebsfehlern von entscheidender Bedeutung. Um sicherzustellen, dass das System sofort reagieren und Alarms ausgeben kann, können wir die Funktion MySQLI :: $ Errno verwenden, um die Fehlerüberwachung und Alarmkonfiguration durchzuführen. In diesem Artikel wird ausführlich erläutert, wie diese Funktion in ein Alarmsystem für Datenbanküberwachung integriert wird.
Mysqli :: $ errno ist eine Eigenschaft der MySQLI -Klasse, die den Fehlercode der neuesten MySQL -Operation angibt. Bei der Ausführung einer Datenbankoperation enthält die Eigenschaft eine bestimmte Fehlernummer, wenn ein Fehler auftritt. Basierend auf dieser Fehlernummer können Sie eine weitere Fehlerbehandlung oder -alarm ausführen.
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_error) {
echo "Verbindungsfehler (" . $mysqli->connect_errno . "): " . $mysqli->connect_error;
}
Wenn im obigen Beispiel ein Fehler beim Anschließen von MySQLI auftritt, gibt $ mysqli-> connect_errno einen Fehlercode zurück, auf den Sie den Alarmmechanismus basierend auf auslösen können.
Um während der Datenbankoperationen rechtzeitig zu überwachen und zu alarmieren, können wir MySQLI :: $ errno kombinieren, um diese Anforderung zu erfüllen. Insbesondere können die folgenden Schritte verwendet werden:
Jedes Mal, wenn Sie mit der Datenbank interagieren, sollten Sie MySQLI :: $ errno überprüfen, um festzustellen, ob ein Fehler aufgetreten ist. Wenn Sie beispielsweise eine Abfrage ausführen oder Daten einfügen, können wir Fehlermeldungen aufzeichnen, wenn ein Fehler auftritt, und einen Alarm auslösen.
$query = "SELECT * FROM users";
$result = $mysqli->query($query);
if ($mysqli->errno) {
// Wenn ein Fehler auftritt,Fehlerinformationen aufzeichnen
error_log("MySQL Fehlercode: " . $mysqli->errno . " Fehlermeldung: " . $mysqli->error);
// Alarm auslösen
sendAlert($mysqli->errno, $mysqli->error);
}
Wenn ein Datenbankfehler erkannt wird, kann ein Alarm über die Sendalert -Funktion gesendet werden. Diese Funktion kann den Administrator per E -Mail, SMS oder andere Mittel benachrichtigen. Hier verwenden wir E -Mails, um Alarme als Beispiel zu senden:
function sendAlert($errno, $error_message) {
$to = "admin@m66.net"; // Administrator -E -Mail
$subject = "Datenbankfehleralarm";
$message = "Ein Datenbankfehler ist aufgetreten,Fehlercode: $errno,Fehlermeldung: $error_message";
// Senden Sie eine E -Mail
mail($to, $subject, $message);
}
Manchmal können Datenbankfehler aufgrund des normalen Betriebs des Systems vorübergehende Probleme sein, z. B. Verbindungszeitüberschreitungen usw. Um häufige Alarme zu vermeiden, können wir einen Alarmschwellenwert festlegen, wodurch nur ein Alarm ausgelöst wird, wenn die Anzahl der Fehler eine bestimmte Grenze überschreitet.
// Anzahl der aufgezeichneten Fehler
$alertThreshold = 5;
$errorCount = 0;
// 假设Wenn ein Fehler auftritt会执行下面的代码
if ($mysqli->errno) {
$errorCount++;
// Wenn die Anzahl der Fehler die Schwelle überschreitet,Senden Sie einen Alarm
if ($errorCount >= $alertThreshold) {
sendAlert($mysqli->errno, $mysqli->error);
$errorCount = 0; // Fehleranzahl zurücksetzen
}
}
Verschiedene Arten von Datenbankfehlern erfordern möglicherweise unterschiedliche Handhabungsmethoden. Beispielsweise können Verbindungsfehler und Abfragefehler unterschiedliche Alarmrichtlinien aufweisen. Sie können Fehlertypen basierend auf Fehlercodes unterscheiden und unterschiedliche Maßnahmen ergreifen.
if ($mysqli->errno) {
switch ($mysqli->errno) {
case 1045: // Berechtigungsfehler
sendAlert($mysqli->errno, "Berechtigungsfehler: " . $mysqli->error);
break;
case 2002: // Verbindungsfehler
sendAlert($mysqli->errno, "Verbindung ist fehlgeschlagen: " . $mysqli->error);
break;
default:
sendAlert($mysqli->errno, "Unbekannter Fehler: " . $mysqli->error);
}
}
Hier ist eine vereinfachte Version des vollständigen Code -Beispiels, in dem zeigt, wie die Datenbanküberwachungsalarme mithilfe von MySQLI :: $ errno implementiert werden: