Position actuelle: Accueil> Derniers articles> Créer un service de notification d'exception avec mysqli :: get_warnings et système de courrier

Créer un service de notification d'exception avec mysqli :: get_warnings et système de courrier

gitbox 2025-06-06

Lorsque vous utilisez des bases de données MySQL dans PHP, en plus de capturer des erreurs, vous devez parfois faire attention aux messages d'avertissement émis par la base de données. Ces avertissements peuvent indiquer des problèmes potentiels tels que la troncature des données, la longueur de champ dépassant les limites, etc. La fonction MySQLI :: Get_Warnings peut nous aider à obtenir ces informations d'avertissement pour un traitement ultérieur.

Cet article présentera comment utiliser MySQLI :: Get_Warnings combiné avec le système de messagerie pour créer un service de notification d'exception simple. Lorsqu'une opération de base de données génère un avertissement, le contenu d'avertissement sera automatiquement envoyé à l'administrateur par e-mail, afin de faciliter la découverte et la gestion en temps opportun des problèmes potentiels.


1. Introduction à mysqli :: get_warnings

MySQLI :: Get_Warnings est une méthode fournie dans l'extension MySQLI de PHP pour obtenir des informations d'avertissement générées par la dernière opération de base de données.

Exemple d'utilisation:

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

Cette méthode renvoie un objet MySQLI_WARNING , contenant ERRNO (code d'avertissement), message (message d'avertissement) et méthodes Next () utilisées pour traverser tous les avertissements.


2. Idées de création de services de notification d'exception

  • Après avoir exécuté l'opération de base de données, appelez Get_Warnings pour vérifier s'il y a un avertissement.

  • Si un avertissement existe, collectez toutes les informations d'avertissement.

  • Grâce au système de messagerie, des messages d'avertissement sont envoyés à la boîte aux lettres de l'administrateur prédéfini.

  • Dans les activités réelles, cette étape peut être intégrée dans la fonction d'encapsulation des opérations de base de données pour réaliser la détection et la notification automatique.


3. Exemple de code: Envoyer en conjonction avec le courrier électronique

L'exemple suivant montre comment détecter les avertissements et envoyer des notifications par e-mail après une opération de base de données:

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

if ($mysqli->connect_errno) {
    die("Échec de la connexion: " . $mysqli->connect_error);
}

$sql = "INSERT INTO users (username) VALUES ('Exemple de noms d&#39;utilisateur au-delà de la longueur……')";
$mysqli->query($sql);

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

    $subject = "Notifications d&#39;avertissement de base de données";
    $body = "Voici les messages d&#39;avertissement générés par les opérations récentes de la base de données:\n\n" . implode("\n", $warningMessages);
    $to = "[email protected]";
    $headers = "From: [email protected]";

    // Envoyer un e-mail
    if (mail($to, $subject, $body, $headers)) {
        echo "Un e-mail de notification d&#39;avertissement a été envoyé。";
    } else {
        echo "Envoi par e-mail a échoué。";
    }
} else {
    echo "Aucun avertissement de base de données détecté。";
}

$mysqli->close();
?>

4. Suggestions avancées

  • Enregistrement : En plus d'envoyer des e-mails, il est recommandé d'écrire des informations d'avertissement au fichier journal pour faciliter les audits et le dépannage ultérieurs.

  • Notification asynchrone : Si l'envoi des e-mails peut bloquer les processus métier, vous pouvez utiliser des files d'attente ou des tâches asynchrones pour traiter l'envoi des e-mails.

  • Plus de canaux d'alarme : combinez avec d'autres méthodes de notification instantanée telles que SMS et WeChat pour améliorer la vitesse de réponse de l'alarme.

  • Encapsulation d'exception : encapsuler les fonctions de fonctionnement de la base de données, capturer uniformément les erreurs et avertissements et éviter le code en double.