Gestion des erreurs (enregistrement en base de donnée)

Contenu du snippet

Ce code enregistre les erreurs PHP rencontrées dans une base de donnée, il stoppe le script si ces erreurs sont trop importante, et enregistre la date où l'erreur s'est produite.
Ce code est une variante du code de Samiby. Ayant trouvé le script très interressant je m'en suis inspiré pour en faire une petite variante.

Source / Exemple :


<?php
function erreurphp( $errno , $errmsg , $errfichier , $errligne , $errcontext ){
    $date = date( 'd/m/Y H:i:s' );
    switch( $errno ){
        //gestion des erreurs importantes
        case 1:
        case 16:
        case 64:
        case 256:
            //Enregistrement de l'erreur
            ecriture_base( $date , $errno , $errmsg , $errfichier , $errligne , 0 );
            //arret du script
            die( 'Erreur : Rééssayez plus tard.' );
        //Gestion des erreurs moyennement importantes
        case 2:
        case 4:
        case 32:
        case 128:
        case 512:
            //Enregistrement de l'erreur
            ecriture_base( $date , $errno , $errmsg , $errfichier , $errligne , 1 );
            break;
        //Sinon, si c'est juste un 'Notice' (avertissement)
        case 8:
        case 1024:
            ecriture_base( $date , $errno , $errmsg , $errfichier , $errligne , 2 );
            break;
    }
}

//toutes les erreurs doivent être reportées
error_reporting( E_ALL );
//Quand on rencontre une erreur, on appelle la fonction erreurphp()
$error_handler = set_error_handler("erreurphp");

//La fonction qui écrit dans le fichier
function ecriture_base( $date , $errno , $errmsg , $errfichier, $errligne, $type_erreur){

    //Connexion à la base de donnée
    include ("config/sql.inc.php");
    $connexion_db = mysql_connect("$host","$login","$pass");
                    mysql_select_db("$bdd","$connexion_db");

    //Enregistrement des données en base
    $sql = "INSERT INTO $table_erreur (date,errno,errmsg,errfichier,errligne,type_erreur) VALUES('$date','$errno,'$errmsg','$errfichier','$errligne','$type_erreur')";
    mysql_query($sql);

    //fermeture connexion à la base de donnée
    mysql_close($connexion_db);
}

?>

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.