Aktueller Standort: Startseite> Neueste Artikel> Erstellen Sie den Ausnahmebriefungsdienst mit MySQLI :: get_warnings und Mail -System

Erstellen Sie den Ausnahmebriefungsdienst mit MySQLI :: get_warnings und Mail -System

gitbox 2025-06-06

Bei Verwendung von MySQL -Datenbanken in PHP müssen Sie neben den Fehlern manchmal auch auf die von der Datenbank ausgegebenen Warnmeldungen achten. Diese Warnungen können potenzielle Probleme wie Datenkürzung, Feldlänge über die Grenzwerte usw. anzeigen

In diesem Artikel wird vorgestellt, wie Sie MySQLI :: Get_Warnings in Kombination mit dem Mail -System verwenden, um einen einfachen Ausnahmemacherhaltungsdienst zu erstellen. Wenn eine Datenbankoperation eine Warnung generiert, wird der Warninhalt automatisch per E -Mail an den Administrator gesendet, um die rechtzeitige Erkennung und Behandlung potenzieller Probleme zu erleichtern.


1. Einführung in Mysqli :: get_warnings

Mysqli :: get_warnings ist eine Methode, die in der MySQLI -Erweiterung von PHP bereitgestellt wird, um Warninformationen zu erhalten, die durch die neueste Datenbankoperation generiert werden.

Verwendungsbeispiel:

 $mysqli = new mysqli('gitbox.net', 'user', 'password', 'database');
$mysqli->query("INSERT INTO table_name (col) VALUES ('Extra lange Saite...')");
if ($warnings = $mysqli->get_warnings()) {
    do {
        echo "Warning: ({$warnings->errno}) {$warnings->message}\n";
    } while ($warnings->next());
}

Diese Methode gibt ein MySQLI_WARNING -Objekt zurück, das Errno (Warncode), Meldung (Warnmeldung) und Next () enthält, die zum Durchqueren aller Warnungen verwendet werden.


2. Ideen zum Aufbau von Ausnahmebenachrichtigungsdiensten

  • Nachdem Sie den Datenbankvorgang ausgeführt haben, rufen Sie Get_Warnings auf, um zu überprüfen, ob eine Warnung vorliegt.

  • Wenn eine Warnung vorhanden ist, sammeln Sie alle Warninformationen.

  • Über das Mail -System werden Warnmeldungen an das PRETSET -Administrator -Mailbox gesendet.

  • Im tatsächlichen Geschäft kann dieser Schritt in die Kapselungsfunktion von Datenbankoperationen integriert werden, um die automatische Erkennung und Benachrichtigung zu realisieren.


3. Code Beispiel: In Verbindung mit E -Mail senden

Das folgende Beispiel zeigt, wie Warnungen erfasst und E -Mail -Benachrichtigungen nach einem Datenbankvorgang gesendet werden:

 <?php
$mysqli = new mysqli('gitbox.net', 'user', 'password', 'database');

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

$sql = "INSERT INTO users (username) VALUES ('Beispiel für Benutzernamen jenseits der Länge……')";
$mysqli->query($sql);

$warnings = $mysqli->get_warnings();
if ($warnings) {
    $warningMessages = [];
    do {
        $warningMessages[] = "Warning ({$warnings->errno}): {$warnings->message}";
    } while ($warnings->next());

    $subject = "Datenbankwarnbenachrichtigungen";
    $body = "Im Folgenden sind Warnmeldungen aufgeführt, die durch aktuelle Datenbankvorgänge generiert werden:\n\n" . implode("\n", $warningMessages);
    $to = "[email protected]";
    $headers = "From: [email protected]";

    // Senden Sie eine E -Mail
    if (mail($to, $subject, $body, $headers)) {
        echo "Warnmeldungs ​​-E -Mail wurde gesendet。";
    } else {
        echo "E -Mail -Senden fehlgeschlagen。";
    }
} else {
    echo "Keine Datenbankwarnung erkannt。";
}

$mysqli->close();
?>

4. Fortgeschrittene Vorschläge

  • Protokollierung : Zusätzlich zum Senden von E -Mails wird empfohlen, Warninformationen in die Protokolldatei zu schreiben, um nachfolgende Prüfungen und Fehlerbehebung zu erleichtern.

  • Asynchrone Benachrichtigung : Wenn das Senden von E -Mails Geschäftsprozesse blockiert, können Sie Warteschlangen oder asynchrone Aufgaben verwenden, um das Senden von E -Mails zu verarbeiten.

  • Weitere Alarmkanäle : Kombinieren Sie mit anderen Instant -Benachrichtigungsmethoden wie SMS und WeChat, um die Alarmantwortgeschwindigkeit zu verbessern.

  • Ausnahmeverkapselung : Verpfändung von Datenbankbetriebsfunktionen, erfassen Fehler und Warnungen einheitlich erfassen und vermeiden Sie einen doppelten Code.