Position actuelle: Accueil> Derniers articles> Utilisez $ errno dans le cadre du système d'alarme de surveillance de la base de données

Utilisez $ errno dans le cadre du système d'alarme de surveillance de la base de données

M66 2025-05-28

Lors du développement d'applications PHP impliquant des interactions de base de données, la capture et la gestion des erreurs de fonctionnement de la base de données sont cruciales. Afin de s'assurer que le système peut répondre rapidement et émettre des alarmes lorsqu'une erreur se produit, nous pouvons utiliser la fonction MySQLI :: $ Errno pour effectuer une surveillance des erreurs et une configuration d'alarme. Cet article expliquera en détail comment intégrer cette fonctionnalité dans un système d'alarme de surveillance de la base de données.

1. Introduction à MySqli :: $ Errno Fonction

MySQLI :: $ Errno est une propriété de la classe MySQLI , indiquant le code d'erreur de l'opération MySQL la plus récente. Lorsque vous effectuez une opération de base de données, si une erreur se produit, la propriété contient un numéro d'erreur spécifique. Vous pouvez effectuer une autre gestion des erreurs ou une alarme en fonction de ce numéro d'erreur.

 $mysqli = new mysqli("localhost", "user", "password", "database");

if ($mysqli->connect_error) {
    echo "Erreur de connexion (" . $mysqli->connect_errno . "): " . $mysqli->connect_error;
}

Dans l'exemple ci-dessus, si une erreur se produit lors de la connexion MySQLI , $ mysqli-> connect_errno renverra un code d'erreur, sur lequel vous pouvez déclencher le mécanisme d'alarme basé.

2. Configurer le système d'alarme de surveillance de la base de données

Afin de surveiller et d'alerter en temps opportun pendant les opérations de base de données, nous pouvons combiner mysqli :: $ errno pour réaliser cette exigence. Plus précisément, les étapes suivantes peuvent être utilisées:

2.1 Erreur d'écoute des opérations de base de données

Chaque fois que vous interagissez avec la base de données, vous devez vérifier Mysqli :: $ errno pour déterminer si une erreur s'est produite. Par exemple, lors de l'exécution d'une requête ou d'insertion de données, nous pouvons enregistrer des messages d'erreur lorsqu'une erreur se produit et déclencher une alarme.

 $query = "SELECT * FROM users";
$result = $mysqli->query($query);

if ($mysqli->errno) {
    // Lorsqu'une erreur se produit,Enregistrer les informations d'erreur
    error_log("MySQL Code d'erreur: " . $mysqli->errno . " message d'erreur: " . $mysqli->error);
    
    // Alarme de déclenchement
    sendAlert($mysqli->errno, $mysqli->error);
}

2.2 Envoyer une notification d'alarme

Lorsqu'une erreur de base de données est détectée, une alarme peut être envoyée via la fonction SendAlert . Cette fonction peut informer l'administrateur par e-mail, SMS ou autres moyens. Ici, nous utilisons un e-mail pour envoyer des alarmes à titre d'exemple:

 function sendAlert($errno, $error_message) {
    $to = "admin@m66.net"; // E-mail administrateur
    $subject = "Alarme d'erreur de la base de données";
    $message = "Une erreur de base de données s'est produite,Code d'erreur: $errno,message d'erreur: $error_message";
    
    // Envoyer un e-mail
    mail($to, $subject, $message);
}

2.3 Réglez le seuil d'alarme

Parfois, les erreurs de base de données peuvent être des problèmes temporaires en raison du fonctionnement normal du système, tels que des délais de connexion, etc. Pour éviter les alarmes fréquentes, nous pouvons définir un seuil d'alarme, qui ne déclenchera une alarme que si le nombre d'erreurs dépasse une certaine limite.

 // Nombre d'erreurs enregistrées
$alertThreshold = 5;
$errorCount = 0;

// 假设Lorsqu'une erreur se produit会执行下面的代码
if ($mysqli->errno) {
    $errorCount++;
    
    // Si le nombre d'erreurs dépasse le seuil,Envoyer une alarme
    if ($errorCount >= $alertThreshold) {
        sendAlert($mysqli->errno, $mysqli->error);
        $errorCount = 0;  // Réinitialiser le nombre d'erreurs
    }
}

2.4 Gestion des différents types d'erreurs

Différents types d'erreurs de base de données peuvent nécessiter différentes méthodes de traitement. Par exemple, les erreurs de connexion et les erreurs de requête peuvent avoir différentes politiques d'alarme. Vous pouvez distinguer les types d'erreur en fonction des codes d'erreur et prendre différentes mesures.

 if ($mysqli->errno) {
    switch ($mysqli->errno) {
        case 1045: // Erreur d'autorisation
            sendAlert($mysqli->errno, "Erreur d'autorisation: " . $mysqli->error);
            break;
        case 2002: // Erreur de connexion
            sendAlert($mysqli->errno, "Échec de la connexion: " . $mysqli->error);
            break;
        default:
            sendAlert($mysqli->errno, "Erreur inconnue: " . $mysqli->error);
    }
}

3. Exemple de code complet

Voici une version simplifiée de l'exemple de code complet qui montre comment implémenter les alarmes de surveillance de la base de données à l'aide de mysqli :: $ errno :