Position actuelle: Accueil> Derniers articles> Utilisation de la stratégie d'utilisation de MySqli :: Debug lors du débogage des connexions multi-données

Utilisation de la stratégie d'utilisation de MySqli :: Debug lors du débogage des connexions multi-données

M66 2025-05-13

Les opérations de base de données de débogage peuvent se compliquer lors du développement de PHP, en particulier lors de la gestion des connexions de la base de données dans une seule application. La méthode MySQLI :: Debug de PHP est un outil de débogage moins mentionné mais très utile, en particulier adapté à l'analyse des connexions de la base de données, de l'exécution de déclarations et même de la visualisation des activités de réseau sous-jacentes.

Cet article introduira en détail comment utiliser efficacement la méthode MySQLI :: Debug lors de la débogage des connexions de la base de données et l'expliquez en combinaison avec un exemple de code.

Qu'est-ce que la méthode MySqli :: Debug ?

MySQLI :: Debug () est une méthode statique fournie dans l'extension MySQLI, qui est utilisée pour envoyer des informations de débogage à la bibliothèque client MySQL, principalement utilisée dans le processus de développement et de débogage. Cette fonction ne renvoie rien, sa fonction principale est d'écrire des informations de débogage dans le fichier de débogage configuré par la bibliothèque client.

Pour le faire fonctionner, la prise en charge de débogage doit être activée dans MY.cnf ou my.ini (généralement configurée via Debug = D: T: O, / Tmp / Client.Trace dans la section client ), puis déclenchez la journalisation à l'aide de cette méthode.

 mysqli::debug("d:t:o,/tmp/client.trace");

Cela rédigera des informations de débogage à /tmp/client.trace .

Stratégies de débogage sous connexion multi-données

Lorsque plusieurs bases de données sont connectées à votre application, telles que la base de données principale et les répliques de lecture multiples, le débogage doit être plus ciblé. Voici quelques stratégies recommandées.

1. Définissez un identifiant séparé pour chaque connexion

Vous pouvez encapsuler le processus de connexion de la base de données, ajouter un nom d'identification à chaque connexion et distinguer la source dans le journal de sortie.

 function connect_to_db($label, $host, $user, $pass, $db) {
    mysqli::debug("d:t:o,/tmp/{$label}_trace.log"); // Configurer le fichier de débogage pour chaque connexion
    $conn = new mysqli($host, $user, $pass, $db);
    if ($conn->connect_error) {
        die("Échec de la connexion ({$label}): " . $conn->connect_error);
    }
    return $conn;
}

$main_db = connect_to_db("main", "localhost", "root", "password", "main_db");
$replica_db = connect_to_db("replica", "localhost", "root", "password", "replica_db");

2. Utilisez des journaux pour coopérer avec le débogage et le suivi

Bien que MySQLI :: Debug soit les informations de débogage sous-jacentes, il peut former un lien de débogage complet avec la sortie du journal de PHP.

 mysqli::debug("d:t:o,/tmp/replica_trace.log");
$replica_conn = new mysqli("localhost", "user", "pass", "replica_db");

if ($replica_conn->connect_error) {
    error_log("Échec de la connexion à la base de données de répliques: " . $replica_conn->connect_error);
} else {
    error_log("La connexion à la base de données de répliques avec succès: " . $replica_conn->host_info);
}

Vous pouvez utiliser comme http://m66.net/log-viewer pour créer une interface de visualisation de journal pour localiser rapidement les problèmes.

3. Configurez une entrée unifiée pour contrôler l'interrupteur de débogage

Dans un environnement de développement ou de test, vous ne voudrez peut-être pas appeler manuellement mysqli :: débogage à chaque fois. À l'heure actuelle, vous pouvez utiliser des variables d'environnement ou des fichiers de configuration pour contrôler l'opportunité d'activer le débogage.

 if (getenv("DB_DEBUG") === "true") {
    mysqli::debug("d:t:o,/tmp/debug_trace.log");
}

Ajouter le fichier .env :

 DB_DEBUG=true

4. Utilisez mysqli_report_all pour signaler un niveau d'erreur

La combinaison de mysqli_report () peut mieux capter des erreurs:

 mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
mysqli::debug("d:t:o,/tmp/debug_trace.log");

$conn = new mysqli("localhost", "user", "pass", "some_db");

Cela lancera des exceptions au lieu de défaillances silencieuses, ce qui vous permet de suivre plus facilement les problèmes au niveau du code.