Debugage des applications [PHP] - PHP - Programmation
Marsh Posté le 28-02-2006 à 11:11:31
perso j'ai aucun moyen de traquer les bugs en phase de prod :x
Je connaissais pas non plus ce que tu as montré, merci de l'info, et ça m'a l'air pas mal fait ton truc
Marsh Posté le 28-02-2006 à 11:25:54
pas bête...mais plutôt qu'envoyer un mail avec le contenu de l'erreur j'aurais plutôt écrit l'erreur dans un log et envoyé un mail juste pour prévenir d'aller lire le log...au moins si l'envoi de mail échoue tu perds pas d'info...
Marsh Posté le 28-02-2006 à 11:29:26
pfiou c'est énorme cette fonction set_error_handler, merci de ce post !
Marsh Posté le 28-02-2006 à 11:31:52
pas idiot, je pense rarement au log,
enfin si j'y pense mais comme ecrire dans un fichier log ne me previent pas, je ne vais pas voir le log et c'est comme si je ne n'etais pas au courant de l'erreur. Conjointement à un envois de mail pourquoi pas...
Par contre, en l'etat, la fonction n'est pas tip top pour les erreurs SQL.
Il va falloir que je rajoute un test ou deux pour recupérer l'erreur mysql.
Je viens de voir la fonction debug_backtrace egalement qui semble très prometteuse...
Marsh Posté le 28-02-2006 à 11:41:24
Pour les erreurs MySQL, j'ai en fait un singleton qui gère la connexion et toutes les requetes à la base.
Ce singleton retourne une valeur pour chaque type d'erreur (erreur de connection, erreur de requête, ...), ce qui permet d'appeler un gestionnaire d'erreur qui fait ce que tu veux derrière. Facile à intégrer à ton système donc.
Voilà, my2cents
Marsh Posté le 28-02-2006 à 11:57:45
Perso j'ai mis en parallele de ma fonction myErrorhandler les fonctions suivantes pour l'acces à la bdd :
Code :
|
Mais je pense qu'il est possible de ne pas mettre l'envois de mail une deuxieme fois ici mais de tout regrouper dans myErrorhandler...
Marsh Posté le 28-02-2006 à 12:03:06
ou une fonction a part qui fait l'envoie de mail, que tu appelles dans ton gestionnaire d'erreur PHP et MySQL. Bête et méchant quoi (ouais c'est mon jour de messages super constructifs je sais)
Marsh Posté le 28-02-2006 à 15:06:08
D'autres idées pour la gestion et le deguscage des bugs sur un site web ?
Marsh Posté le 28-02-2006 à 15:20:54
Djebel1 a écrit : ou une fonction a part qui fait l'envoie de mail, que tu appelles dans ton gestionnaire d'erreur PHP et MySQL. Bête et méchant quoi (ouais c'est mon jour de messages super constructifs je sais) |
Je me demande ce qui se passerait si cette fonction provoque une erreur.
C'est un coup à avoir une belle boucle sans fin.
Marsh Posté le 28-02-2006 à 15:21:08
coder bien du premier coup?
Marsh Posté le 28-02-2006 à 15:48:53
Même bien codé, si le programme d'envoie de mail plante, t'as pas droit à uen belle alerte?
Marsh Posté le 28-02-2006 à 15:49:27
euh, c'était une connerie, hein.
Marsh Posté le 28-02-2006 à 15:50:01
dans l'un des articles gratuits de nexen.net, j'avais vu un outil pour débugger du php, mais ça supposait avoir mis des instructions par-ci par-là dans ses scripts pour que l'outil fonctionne. Ca reposait sur debug_backtrace(), il me semble...
Marsh Posté le 28-02-2006 à 16:01:47
En surfant sur nexen, j'ai trouvé une classe de debugage téléchargeable ici : http://phpdebug.sourceforge.net
Par contre j'ai pas testé.
il semble que ça utilise la librairie PEAR. J'en entends beaucoup parler mais je ne sais pas dutout ce que c'est. Est-ce qu'il faut l'installer (la librairie pear) ou elle est disponible par defaut dans php ?
Marsh Posté le 28-02-2006 à 17:52:49
fluminis a écrit : En surfant sur nexen, j'ai trouvé une classe de debugage téléchargeable ici : http://phpdebug.sourceforge.net |
Je ne sais pas s'il s'agit de la même librairie dont je parlais précédemment.
Pear est un ensemble de packages php réalisant des fonctions dont on a souvent besoin dans un projet de site web ; ça évite de réinventer la roue à chaque fois.
Certains package de Pear sont filés avec easyphp (DB, par ex, qui est une couche d'abstraction de SGBD). C'est bien pratique
Marsh Posté le 01-03-2006 à 09:31:53
Toujours dans mes recherches de gestion d'erreur, je viens de trouver cette page :
http://frederic.bouchery.free.fr/? [...] es-Erreurs
Il se sert de la fonction debug_backtrace pour recupérer le nom de la fonction qui a générée l'erreur, et d'un tableau associatif pour appeller la fonction de gestion d'erreur correspondante.
C'est une idée à creuser, peut etre qu'avec ca on pourrait savoir plus facilement qu'il y a eu une erreur mysql et ainsi afficher/envoyer un mail avec l'erreur mysql...
Marsh Posté le 08-03-2006 à 09:58:39
Bien...
Finalement envoyer un mail à chaque erreur ne semble pas une bonne idée :
j'ai eu une erreur Notice dans une boucle...
La page etait assez visitée. Bilan un tentaine de passage dans la boucle par page vue : j'ai recu un nombre incalculable de mails !
De même sur un site perso free, ça a explosé mon quota de mail
La technique est encore à paufiner.
Le log proposé plus haut, pourquoi pas mais si je continue à envoyé en parallele un mail pour me signaler qu'il y a une erreur, je vais revenir au meme probleme.
Des idées pour améliorer ca ?
Marsh Posté le 08-03-2006 à 11:04:01
Mes idées persos vite fait :
Je pense que c'est la derniére solution qui envéra le moins de mail en perdant le minimum d'infos.
Marsh Posté le 08-03-2006 à 11:18:07
Ton idée de tableau est interessante.
Je vais regarder ca.
Ce qui est dommage, c'est que je vais devoir rajouter quelquechose à la fin de mes scripts. Là, une seule ligne en haut de mes scripts (include("debug.php" ); ) suffisait...
Marsh Posté le 08-03-2006 à 11:22:22
Je sais plus si c'est toujours faisable en php5, mais avec php3 et 4, (a moins que ca soit géré par apache, je sais plus) il était possible de faire appeler un fichier php à la fin de l'exécution de chaque script php (une sorte d'include pas visible) et il était même possible de faire ça avant l'exécution de chaque script php.
Mais je n'ai jamais été fan de cette façon de faire et je ne me souviens plus du tout comment c'est faisable.
Personellement, j'ai un script qui apelle tous les autre en fonction de ce qui est demandé comme ça, j'ai qu'un seul fichier à modifier pour ce genre de chôse.
Marsh Posté le 28-02-2006 à 10:53:47
Bonjour à tous,
Mon site prend de l'essort et au fil des modifications, il s'etoffe et devient de plus en plus complexe.
Malgrés les phases de tests, il arrive que malheureusement un bug se glisse sur mes pages.
J'ai decouvert recemment la splendide fonction php : set_error_handler
Ainsi à chaque Warning et/ou Notice ma fonction d'erreur personnailsée m'envoie un mail et je peux ainsi corriger dans la foulée.
Voila en gros ma fonction :
$CONF['show_errors'] me permet d'afficher l'erreur sur mon serveur de test, sur le serveur de prod, il est à false.
$CONF['admin_mail'] contient l'email de la personne a prevenir
la fonction 'email' remplace la fonction 'mail' de php chez mon hebergeur
J'aimerai savoir comment vous faites sur vos sites web pour gerer et tracker ces bugs qui peuvent survenir.
Et comment je pourrai amméliorer ma fonction de traitement d'erreur.
Message édité par fluminis le 28-02-2006 à 10:56:33
---------------
http://poemes.iceteapeche.com - http://www.simuland.net