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

Soyez le premier à donner votre avis sur cette source.

Snippet vu 3 787 fois - Téléchargée 32 fois

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

Ajouter un commentaire

Commentaires

Messages postés
144
Date d'inscription
vendredi 18 avril 2003
Statut
Membre
Dernière intervention
4 janvier 2010

le mieux serait peut-être de faire le stockage dans une base de données + dans un fichier. comme ça si c dans la base le problème, c quand même stocké dans le fichier.

On pourrait même envoyer un mel à l'administrateur en plus...

Florian
Messages postés
282
Date d'inscription
vendredi 16 mai 2003
Statut
Membre
Dernière intervention
19 juillet 2006

Oauis c'est pas mal du tout... mais il y a un défaut énorme dans ton code (ou plutot ton raisonnement): si c'est la connexion à la base de données qui génère une erreur, tu fais comment pour enregistrer ton erreur????
looooooooooool je sais que je cherche la petite bête, pour me faire pardonner je vais te mettre 9/10
Messages postés
249
Date d'inscription
mardi 24 octobre 2000
Statut
Membre
Dernière intervention
28 août 2009

C'est un bon principe, surtout pour récuperer automatiquement les erreurs générées par le code (mais bon il ne devrait pas avoir d'erreur dans le code lol)

8/10

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.