Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
771 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Gestionaire parse error

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Gestionaire parse error

n°1173572
Profil sup​primé
Posté le 09-08-2005 à 20:34:24  answer
 

Bonjour,  
 
J'aimerai beaucoup personnaliser les parses error genre mettre une autre phrases que PARSE ERROR  
 
Et aussi j'aimerai faire un compteur de parse error (a chasue parse error incrémenter un variable dans un cham d'une table sql  
 
c'est possible ?

mood
Publicité
Posté le 09-08-2005 à 20:34:24  profilanswer
 

n°1173603
mrbebert
Posté le 09-08-2005 à 21:41:24  profilanswer
 

Je pense que oui. Il existe une fonction qui se déclenche sur événement (en cas d'erreur), qui permet de trapper ce genre de problème :)  
 
Le problème, c'est que je connais plus son nom [:gratgrat]

n°1173604
Profil sup​primé
Posté le 09-08-2005 à 21:42:36  answer
 

erf ... pitetre que ça te revenir ... ou a quelqu'un d'autre

n°1173608
mrbebert
Posté le 09-08-2005 à 21:51:43  profilanswer
 

Je crois que c'est ca :
http://fr2.php.net/manual/fr/funct [...] andler.php
 
(suffisait de faire une recherche sur "handler" :o )

n°1173612
Profil sup​primé
Posté le 09-08-2005 à 22:22:06  answer
 

"Les types d'erreur suivants ne peuvent pas être gérés avec cette fonction : E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, ".....

n°1173615
mrbebert
Posté le 09-08-2005 à 22:39:18  profilanswer
 

Zut :(
 
Peut être celle ci, mais faut tester pour savoir si elle est bien appellée dans les cas qui t'intéressent [:figti]  
(en fait, c'est à celle ci que je pensais au début, même si ce n'est pas tout à fait ce dont tu as besoin :o )


Message édité par mrbebert le 09-08-2005 à 22:39:34
n°1173689
Profil sup​primé
Posté le 10-08-2005 à 09:21:00  answer
 

Quelqu'un a une idée ?

n°1173708
esox_ch
Posté le 10-08-2005 à 09:53:44  profilanswer
 

Je crois qu'il te reste a regarder du coté du logger ...

n°1173710
mcjoedassi​n
Posté le 10-08-2005 à 09:57:23  profilanswer
 

une idée simple :
une parse error signifie que ton code php est syntaxiquement incorrect (ie ce n'est pas du php !) Donc la meilleure chose que tu puisses faire est sans doute de faire plus attention au programme que tu écris, non ?

n°1173715
Profil sup​primé
Posté le 10-08-2005 à 10:08:32  answer
 

esox_ch a écrit :

Je crois qu'il te reste a regarder du coté du logger ...


Logger ?

mcjoedassin a écrit :

une idée simple :
une parse error signifie que ton code php est syntaxiquement incorrect (ie ce n'est pas du php !) Donc la meilleure chose que tu puisses faire est sans doute de faire plus attention au programme que tu écris, non ?


non, je suis en train de developper un truc et j'aimerai me rendre compte a la fin combien j'ai fais de parse error.


Message édité par Profil supprimé le 10-08-2005 à 10:09:11
mood
Publicité
Posté le 10-08-2005 à 10:08:32  profilanswer
 

n°1173718
esox_ch
Posté le 10-08-2005 à 10:10:27  profilanswer
 

mcjoedassin a écrit :

une idée simple :
une parse error signifie que ton code php est syntaxiquement incorrect (ie ce n'est pas du php !) Donc la meilleure chose que tu puisses faire est sans doute de faire plus attention au programme que tu écris, non ?


 
Biensur qu'il doit faire attention, mais rien ne l'empeche de vouloir modifier l'output ... Ca peut etre particulierement utile si tu utilises une interface de lecture fait maison ... Par exemple si le resultat de ses page est lu par un bot, il se peut qu'il prefere changer la mise en page de son erreur pour qu'elle soit mieux comprise par le bot ...


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1173721
esox_ch
Posté le 10-08-2005 à 10:11:16  profilanswer
 


 
TU vas sur php.net et tu cherches, je suis sur que c'est a ta portée


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1173726
Profil sup​primé
Posté le 10-08-2005 à 10:18:43  answer
 

Ah en fait je génère un log d'erreur, puis je le parse en php et dès qu'il trouve "parse error" il incrémente le champ de la table compteur_de_parse_error ..... non ?

n°1173734
Profil sup​primé
Posté le 10-08-2005 à 10:33:32  answer
 

euh j'ai cherché et j'ai trouvé mais ....
ce code est disponible sur php.net
 

Code :
  1. <?php
  2. // Nous allons faire notre propre gestion
  3. error_reporting(0);
  4. // Fonction spéciale de gestion des erreurs
  5. function userErrorHandler($errno, $errmsg, $filename, $linenum, $vars)
  6. {
  7.    // Date et heure de l'erreur
  8.    $dt = date("Y-m-d H:i:s (T)" );
  9.    // Définit un tableau associatif avec les chaînes d'erreur
  10.    // En fait, les seuls niveaux qui nous interessent
  11.    // sont E_WARNING, E_NOTICE, E_USER_ERROR,
  12.    // E_USER_WARNING et E_USER_NOTICE
  13.    $errortype = array (
  14.                E_ERROR          => "Erreur",
  15.                E_WARNING        => "Alerte",
  16.                E_PARSE          => "Erreur d'analyse",
  17.                E_NOTICE          => "Note",
  18.                E_CORE_ERROR      => "Core Error",
  19.                E_CORE_WARNING    => "Core Warning",
  20.                E_COMPILE_ERROR  => "Compile Error",
  21.                E_COMPILE_WARNING => "Compile Warning",
  22.                E_USER_ERROR      => "Erreur spécifique",
  23.                E_USER_WARNING    => "Alerte spécifique",
  24.                E_USER_NOTICE    => "Note spécifique",
  25.                E_STRICT          => "Runtime Notice"
  26.                );
  27.    // Les niveaux qui seront enregistrés
  28.    $user_errors = array(E_USER_ERROR, E_USER_WARNING, E_USER_NOTICE);
  29.  
  30.    $err = "<errorentry>\n";
  31.    $err .= "\t<datetime>" . $dt . "</datetime>\n";
  32.    $err .= "\t<errornum>" . $errno . "</errornum>\n";
  33.    $err .= "\t<errortype>" . $errortype[$errno] . "</errortype>\n";
  34.    $err .= "\t<errormsg>" . $errmsg . "</errormsg>\n";
  35.    $err .= "\t<scriptname>" . $filename . "</scriptname>\n";
  36.    $err .= "\t<scriptlinenum>" . $linenum . "</scriptlinenum>\n";
  37.    if (in_array($errno, $user_errors)) {
  38.        $err .= "\t<vartrace>".wddx_serialize_value($vars,"Variables" )."</vartrace>\n";
  39.    }
  40.    $err .= "</errorentry>\n\n";
  41.  
  42.    // sauvegarde de l'erreur, et mail si c'est critique
  43.    error_log($err, 3, "/usr/local/php4/error.log" );
  44.    if ($errno == E_USER_ERROR) {
  45.        mail("phpdev@example.com","Critical User Error",$err);
  46.    }
  47. }
  48. function distance($vect1, $vect2)
  49. {
  50.    if (!is_array($vect1) || !is_array($vect2)) {
  51.        trigger_error("Incorrect parameters, arrays expected", E_USER_ERROR);
  52.        return NULL;
  53.    }
  54.    if (count($vect1) != count($vect2)) {
  55.        trigger_error("Vectors need to be of the same size", E_USER_ERROR);
  56.        return NULL;
  57.    }
  58.    for ($i=0; $i<count($vect1); $i++) {
  59.        $c1 = $vect1[$i]; $c2 = $vect2[$i];
  60.        $d = 0.0;
  61.        if (!is_numeric($c1)) {
  62.            trigger_error("Coordinate $i in vector 1 is not a number, using zero",
  63.                            E_USER_WARNING);
  64.            $c1 = 0.0;
  65.        }
  66.        if (!is_numeric($c2)) {
  67.            trigger_error("Coordinate $i in vector 2 is not a number, using zero",
  68.                            E_USER_WARNING);
  69.            $c2 = 0.0;
  70.        }
  71.        $d += $c2*$c2 - $c1*$c1;
  72.    }
  73.    return sqrt($d);
  74. }
  75. $old_error_handler = set_error_handler("userErrorHandler" );
  76. // constante non définie, qui génère une alerte
  77. $t = I_AM_NOT_DEFINED;
  78. // définition de quelques vecteurs
  79. $a = array (2, 3, "foo" );
  80. $b = array (5.5, 4.3, -1.6);
  81. $c = array (1, -3);
  82. // génère une erreur utilisateur
  83. $t1 = distance ($c, $b)."\n";
  84. // génère une erreur utilisateur
  85. $t2 = distance ($b, "i am not an array" )."\n";
  86. // Génère une alerte
  87. $t3 = distance ($a, $b)."\n";
  88. ?>


je le lance hop il me log les erreurs, j'ajoute une erreur de type parse genre $ok = "blop" (pas de point virgule) et il me log pas .... par contre il l'affiche (parse error on line machin)....

n°1173739
mcjoedassi​n
Posté le 10-08-2005 à 10:37:56  profilanswer
 

c'est marqué ça aussi
It seems that parse errors will be handled internally even if you've designated your own error handler; that is, your error-handling function will /not/ be called on a parse error.
 
par ailleurs, un parser ne continue pas toujours après avoir trouvé une erreur ...

n°1173741
Profil sup​primé
Posté le 10-08-2005 à 10:41:23  answer
 

je fais quoi alors ? si il n'y pas de fonction pour logger les parses error ?

n°1173744
mcjoedassi​n
Posté le 10-08-2005 à 10:44:54  profilanswer
 

écris des programmes syntaxiquement correct, c'est simple !
il suffit que ton script passe une fois au parser sans parse error et il n'en génèrera jamais plus sur ce fichier !

n°1173747
Profil sup​primé
Posté le 10-08-2005 à 10:45:58  answer
 

non mais j'ai besoin de ce compteur de parse error alors ne me dit pas ça ! Mais si tu ne sais pas plus que moi comment faire spa grave hein !

n°1173791
esox_ch
Posté le 10-08-2005 à 11:34:35  profilanswer
 

Je parle pas d'error reporting je parle d'error logging ... Si tu matte dans les fonctions de log d'erreur tu verras que tu peux rediriger le flux vers plusieurs types d'action ... Tu patches un peu et tu as ton compteur


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1173802
Profil sup​primé
Posté le 10-08-2005 à 11:52:28  answer
 

http://www.google.fr/search?hl=fr& [...] +php&meta=
.... et je tombe sur ce que j'ai montré plus haut :(

n°1173813
pascal_
Posté le 10-08-2005 à 12:07:26  profilanswer
 


 
Je sais franchement pas si tu peux faire ça.
 
Parse error intervient quand le moteur de php charge un fichier php. La première chose qu'il fait c'est qu'il regarde si le fichier est correct. A la première erreur trouvée, il sort un PARSE ERROR (et il n'y en a qu'un, même si il y a deux erreurs dans un fichier).
 
Donc si il y a un parse error dans index.php, tu ne peux rien faire. Php ouvre index.php, trouve une erreur, affiche l'erreur et s'arrête (aucun code php n'est executé).
 
Si un parse error arrive dans un include, donc après que index.php est été considéré sans erreur et que du code php a été executé, je ne sais pas ce qu'il se passe :D . Mais il y a fort a parier que php stop tout execution.
 
PS : en cherchant un peu sur google :
http://www.nexen.net/docs/php/anno [...] -parse.php
http://answers.google.com/answers/threadview?id=545112

n°1173819
Profil sup​primé
Posté le 10-08-2005 à 12:11:57  answer
 

ah ben merci pascal_ ! je suis un peu déçu mais je préfère savori que c'est impossible que de cherche rparotuto depuis hier sans trouver

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Gestionaire parse error

 

Sujets relatifs
Unknown Error au lancement de Visual Studio (2003 & 2005)error: invalid operands of types 'const char [15]' and 'short ..
link error - undefined reference to `std::ios_base::Init::Init()'linker error sur dev CPP avec la librairie tiff
Probleme On error gotoERROR C2533 constructor not allowed a return type!!
fatal error C1083error in your SQL syntax
Dereferencing error en utilisant des messagesERROR LNK2019
Plus de sujets relatifs à : Gestionaire parse error


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR