Position actuelle: Accueil> Derniers articles> Mécanisme de reconnexion de la base de données automatique selon $ Errno

Mécanisme de reconnexion de la base de données automatique selon $ Errno

M66 2025-06-11

Lors du développement d'applications PHP, la stabilité des connexions de la base de données est une partie très importante. Surtout dans les environnements avec une concurrence élevée ou des fluctuations de réseau élevées, les connexions de la base de données peuvent être interrompues ou invalidées. Pour résoudre ce problème, nous pouvons implémenter automatiquement le mécanisme de reconnexion de la base de données en fonction du code d'erreur $ Errno . Cet article présentera comment reconnecter automatiquement les bases de données via le code d'erreur $ Errno dans PHP.

1. Comprendre $ Errno Code d'erreur

Dans PHP, lorsque vous effectuez des opérations de base de données, si une erreur de connexion se produit, la base de données renvoie un code d'erreur $ Errno . Nous pouvons juger si la reconnexion de la base de données est requise en fonction du code d'erreur. Habituellement, les codes d'erreur courants sont les suivants:

  • 2002 : Impossible de se connecter au serveur MySQL.

  • 2006 : Le serveur MySQL est déconnecté.

  • 2013 : MySQL Query Timeout.

Si nous capturons ces codes d'erreur, nous pouvons déterminer que l'erreur est causée par le problème de la connexion de la base de données, et ainsi reconnecter.

2. Créez une fonction de connexion de la base de données

Tout d'abord, nous avons besoin d'une fonction pour établir la connexion de la base de données. Si la connexion échoue, nous devons déterminer si nous devons réessayer la connexion en fonction du code d'erreur.

 <?php
function connectToDatabase() {
    $host = 'localhost';   // Serveur de base de données
    $dbname = 'test_db';   // Nom de base de données
    $username = 'root';    // Nom d&#39;utilisateur de base de données
    $password = '';        // Mot de passe de base de données

    try {
        // Essayez d&#39;établir une connexion de base de données
        $pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
        // installationPDOLe mode d&#39;erreur est une exception
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        return $pdo;
    } catch (PDOException $e) {
        // Catch Exceptions,Retourner le message d&#39;erreur
        echo "Échec de la connexion: " . $e->getMessage();
        return null;
    }
}
?>

Ce code fournit une fonction de connexion de base de données simple ConnectTodatabase , qui renvoie un objet PDO pour effectuer des opérations de base de données. Si la connexion échoue, la fonction renvoie NULL .

3. Mettre en œuvre le mécanisme de reconnexion automatique

Ensuite, nous devons juger le code d'erreur $ Errno et le reconnecter automatiquement lors de l'exécution des opérations de base de données.

 <?php
function reconnectIfNeeded($pdo) {
    // si PDO L&#39;objet est vide,表示数据库Échec de la connexion
    if ($pdo === null) {
        // Essayez de vous reconnecter
        echo "正在Essayez de vous reconnecter数据库...";
        $pdo = connectToDatabase();
    }

    // Déterminez si la connexion est réussie
    if ($pdo !== null) {
        echo "La connexion de la base de données est réussie!";
    } else {
        echo "数据库Échec de la connexion,Veuillez réessayer plus tard。";
    }

    return $pdo;
}

// Simuler les opérations de la base de données
function queryDatabase($pdo) {
    try {
        // Effectuer une opération de requête simple
        $stmt = $pdo->query("SELECT * FROM users");
        while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
            print_r($row);
        }
    } catch (PDOException $e) {
        // capturer PDO anormal,Et déterminer s&#39;il faut reconnecter en fonction du code d&#39;erreur
        if ($e->getCode() == 2002 || $e->getCode() == 2006 || $e->getCode() == 2013) {
            echo "Connexion de la base de données interrompue,Essayez de vous reconnecter...\n";
            // Appeler la fonction de reconnexion
            $pdo = reconnectIfNeeded($pdo);
            // Essayez de demander à nouveau la base de données
            queryDatabase($pdo);
        } else {
            // Autres erreurs,输出anormal信息
            echo "La requête a échoué: " . $e->getMessage();
        }
    }
}

// Initialiser la connexion de la base de données
$pdo = connectToDatabase();

// Effectuer des opérations de requête
queryDatabase($pdo);
?>

Explication du code:

  1. ConnectTodatabase () : utilisé pour établir une connexion de base de données.

  2. ReconnectifNeedEd () : Cette fonction tente de se reconnecter lorsque la connexion de la base de données est détectée comme vide.

  3. queryDatabase () : Cette fonction exécute la requête de base de données. Si une erreur de connexion se produit (le code d'erreur 2002, 2006 ou 2013), reconnecterraedED () sera appelé réceptera automatiquement la base de données et réexécuter la requête.

Lorsque nous effectuons des opérations de base de données, nous captons l'exception via un coup de main et vérifions le code d'erreur $ Errno . Lorsqu'une erreur d'interruption de connexion est rencontrée, reconnecter et la requête est automatiquement réexécutée.

4. Résumé

Utilisez le code d'erreur $ Errno pour capturer efficacement l'interruption de connexion de la base de données et restaurer la connexion de la base de données via le mécanisme de reconnexion automatique pour assurer la stabilité de l'application. L'exemple de code ci-dessus montre comment gérer les erreurs de connexion de la base de données et implémenter la reconnexion dans PHP. Grâce à une gestion raisonnable des erreurs, nous pouvons nous assurer que l'application peut toujours fonctionner normalement face aux défaillances de la base de données.