Position actuelle: Accueil> Derniers articles> Intégrer $ errno avec le système de journal pour la classification des erreurs

Intégrer $ errno avec le système de journal pour la classification des erreurs

M66 2025-05-28

Lors du développement d'applications PHP, les extensions MySQLI sont un moyen courant d'interagir avec les bases de données MySQL. Lorsqu'une erreur de fonctionnement de la base de données se produit, le code d'erreur est généralement obtenu via mysqli :: $ errno et les informations d'erreur sont obtenues en combinaison avec l'erreur mysqli :: $ . Cependant, comment classer efficacement, analyser et enregistrer ces informations d'erreur dans le journal est une étape importante pour améliorer la fiabilité des applications.

Cet article expliquera comment classer et enregistrer les erreurs MySQL via MySQLI :: $ Errno et le système de journalisation de PHP. Cela peut mieux suivre et gérer les problèmes de connexion de la base de données, les défaillances de requête et d'autres erreurs, ce qui facilite le dépannage et la réparation plus tard.

1. Catchez les erreurs de mysqli

Tout d'abord, nous devons savoir comment obtenir des informations d'erreur via MySQLI . La classe MySQLI fournit plusieurs propriétés pour nous aider à attraper des erreurs liées à la base de données:

  • mysqli :: $ errno : renvoie le code d'erreur de l'opération MySQL précédente.

  • MySQLI :: $ ERROR : Renvoie le message d'erreur de l'opération MySQL précédente.

En utilisant ces informations, nous pouvons vérifier si chaque opération de base de données est réussie. S'il échoue, nous pouvons utiliser ces informations pour obtenir une description d'erreur détaillée.

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

// Vérifiez la connexion
if ($mysqli->connect_error) {
    echo "Échec de la connexion: " . $mysqli->connect_error;
    exit();
}

// Exécuter un SQL Requête
$result = $mysqli->query("SELECT * FROM non_existent_table");

if (!$result) {
    // Capturer les codes d&#39;erreur et les messages d&#39;erreur
    $errno = $mysqli->errno;
    $error = $mysqli->error;
    echo "MySQL Numéro d&#39;erreur: $errno, message d&#39;erreur: $error";
}
?>

Si l'exécution de la requête échoue, nous pouvons utiliser MySQLI :: $ Errno et MySQLI :: $ Erreur pour capturer les informations d'erreur et l'enregistrer.

2. Intégrer le système de journalisation

Ensuite, nous intégrons ces messages d'erreur dans le système de journal. Il est courant de sortir des informations d'erreur dans un fichier journal ou d'utiliser des bibliothèques de journaux existantes telles que Monolog pour implémenter des fonctions de journalisation plus complexes.

2.1 Utilisation de la fonction de journalisation intégrée PHP

Le moyen le plus simple consiste à utiliser la fonction de journalisation intégrée de PHP error_log () pour enregistrer l'erreur.

 <?php
// Configurer le chemin du fichier journal
$log_file = "/path/to/your/logfile.log";

// 捕获message d&#39;erreur并写入日志
if (!$result) {
    $errno = $mysqli->errno;
    $error = $mysqli->error;
    $log_message = date("Y-m-d H:i:s") . " - Numéro d&#39;erreur: $errno, message d&#39;erreur: $error\n";
    error_log($log_message, 3, $log_file);
}
?>

2.2 Enlectricité avec monologue

Pour une journalisation plus flexible, nous pouvons utiliser Monolog comme bibliothèque tierce. Monologa prend en charge une variété de processeurs de journal, qui peuvent publier des journaux aux fichiers, bases de données, e-mails et autres canaux, et prend en charge les niveaux de journal (tels que le débogage , les informations , l'erreur , etc.).

 <?php
require 'vendor/autoload.php';

use Monolog\Logger;
use Monolog\Handler\StreamHandler;

// Créer un canal de journal
$log = new Logger('my_logger');
$log->pushHandler(new StreamHandler('/path/to/your/logfile.log', Logger::ERROR));

// 执行Requête并捕获erreur
if (!$result) {
    $errno = $mysqli->errno;
    $error = $mysqli->error;
    // 记录message d&#39;erreur到日志
    $log->error("MySQL Numéro d&#39;erreur: $errno, message d&#39;erreur: $error");
}
?>

2.3 Classification des erreurs

Grâce aux journaux, nous pouvons non seulement enregistrer des informations d'erreur, mais également les classer en fonction des différents types d'erreurs. Par exemple, les défaillances de la connexion de la base de données, les erreurs de syntaxe de requête SQL, les violations des contraintes de données, etc. Ces erreurs peuvent être enregistrées séparément pour une analyse ultérieure.

Nous pouvons définir différents niveaux de journal pour différents types d'erreurs:

 <?php
if ($mysqli->connect_error) {
    $log->critical("数据库Échec de la connexion: " . $mysqli->connect_error);
} elseif (!$result) {
    $errno = $mysqli->errno;
    $error = $mysqli->error;
    if ($errno == 1146) {
        $log->warning("Il n&#39;y a aucune erreur dans le tableau: $error");
    } else {
        $log->error("autre MySQL erreur: $error");
    }
}
?>

Dans cet exemple, si la connexion de la base de données échoue, nous utilisons le niveau critique pour enregistrer le journal, indiquant une erreur grave. Pour les erreurs qui n'existent pas dans le tableau, nous utilisons des enregistrements de niveau d'avertissement .

3. Analyse et surveillance

Avec les journaux d'erreur, nous pouvons également analyser ces journaux pour trouver des problèmes potentiels dans l'application. Par exemple, nous pouvons utiliser la commande grep pour trouver des erreurs spécifiques dans le fichier journal, ou utiliser des outils d'analyse du journal pour effectuer une analyse plus approfondie.

Si vous souhaitez surveiller automatiquement les erreurs de base de données, vous pouvez combiner certains outils de surveillance du système (tels que la pile de wapiti, Graylog, etc.) pour détecter et répondre aux erreurs de base de données via l'agrégation et l'analyse des journaux.

4. Résumé

En intégrant MySQLI :: $ Errno au système de journal, nous pouvons mieux gérer et surveiller les erreurs dans les opérations de la base de données MySQL. Cela nous aide non seulement à attraper et à classer les erreurs, mais facilite également l'analyse et le débogage des erreurs ultérieures, améliorant ainsi la fiabilité et la stabilité de l'application.

Si vous avez utilisé une bibliothèque de journaux comme Monolog dans votre projet, combinée avec des informations d'erreur MySQLI , vous pouvez obtenir un suivi et un traitement d'erreur plus efficaces. La classification et l'analyse des erreurs sont également une étape importante dans l'optimisation du système, aidant les développeurs à découvrir tôt les problèmes potentiels.