Maison > base de données > tutoriel mysql > le corps du texte

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

Barbara Streisand
Libérer: 2024-11-06 03:05:02
original
687 Les gens l'ont consulté

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) {}
Copier après la connexion

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");
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!