Maison >base de données >tutoriel mysql >Pouvez-vous stocker les erreurs PHP dans une base de données au lieu d'un fichier journal ?

Pouvez-vous stocker les erreurs PHP dans une base de données au lieu d'un fichier journal ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-06 03:05:02770parcourir

Can You Store PHP Errors in a Database Instead of a Log File?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn