Les erreurs PHP peuvent-elles être écrites dans une base de données au lieu d'un fichier journal des erreurs ?
Les erreurs PHP sont généralement enregistrées dans le fichier error_log standard, mais il peut être préférable de les stocker dans une base de données pour faciliter leur suivi et leur analyse. Bien que cela ne soit pas directement possible sans créer un gestionnaire d'erreurs personnalisé, cela peut être réalisé avec un seul changement global.
Implémentation d'un gestionnaire d'erreurs personnalisé
La clé du contrôle la façon dont les erreurs sont gérées consiste à créer un gestionnaire d’erreurs personnalisé. Cela peut être fait en utilisant la fonction set_error_handler(), qui prend une fonction de rappel comme argument. La fonction de rappel doit avoir la signature suivante :
function error_handler($errno, $errstr, $errfile, $errline) {}
Dans la fonction de rappel, vous pouvez déterminer comment chaque erreur doit être traitée, y compris si elle doit être enregistrée dans une base de données.
Exemple de journalisation des erreurs sur MySQL
Le code suivant montre un exemple de gestionnaire d'erreurs personnalisé qui enregistre les erreurs PHP dans une base de données MySQL :
function myErrorHandler($errno, $errstr, $errfile, $errline) { // Establish connection to MySQL database $conn = mysqli_connect("hostname", "username", "password", "database"); // Prepare SQL query to log error $query = "INSERT INTO error_log (number, string, file, line) VALUES (?, ?, ?, ?)"; $stmt = mysqli_prepare($conn, $query); // Bind parameters to SQL query mysqli_stmt_bind_param($stmt, "isss", $errno, $errstr, $errfile, $errline); // Execute SQL query to log error mysqli_stmt_execute($stmt); // Close database connection mysqli_close($conn); // Don't execute PHP internal error handler return true; } // Set user-defined error handler $old_error_handler = set_error_handler("myErrorHandler");
Après avoir défini le paramètre défini par l'utilisateur gestionnaire d'erreurs, toutes les erreurs PHP seront acheminées via votre logique de gestion des erreurs personnalisée, y compris la journalisation dans la base de données MySQL.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!