Encapsuler tout une page dans un try catch

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Encapsuler tout une page dans un try catch

Re: Encapsuler tout une page dans un try catch

par devlop78 » 20 janv. 2012, 04:05

PHP ne gère pas tout en exception (d'ailleurs presque rien avant l'objet), le try catch sera inadapté.

Je te conseille la section http://www.php.net/manual/fr/ref.errorfunc.php

Cette section te montre par exemple set_error_handler() qui te permet d'écrire toi-même ton gestionnaire d'aide, pour écrire dans un fichier dans un dossier de ton choix, et faire d'autres choses si tu veux. Cependant, le error handler ne s'execute pas sur des fatal error ou équivalent. Il existe alors une astuce, à utiliser avec modération :

http://php.net/manual/en/function.regis ... nction.php

Cette fonction sera executée quoiqu'il arrive (même un timeout je crois). Tu peux donc vérifier si une erreur a été lancée, et faire le traitement nécessaire. A savoir qu'une exception non rattrapée devient un fatal error et donc rentre dans ce cas-là.

Re: Encapsuler tout une page dans un try catch

par xTG » 16 janv. 2012, 14:08

Ce ne sont pas les logs d'Apache mais de php.
Tu les trouveras normalement dans un fichier nommé error_log à la racine de ton domaine.

Re: Encapsuler tout une page dans un try catch

par Tong » 16 janv. 2012, 13:01

C'est ce que je me disais en écrivant ce post ... donc si je fais un cron job qui fait un grep dans les logs d'erreurs d'apache (ils sont situés où en général ?) et m'envoie le résultat par mail, j'obtiendrais la même chose qu'en faisant un try catch ?

Malheureusement, je ne peux pas vérifier tout de suite, je ne peux pas me connecter au serveur de là où je suis.

Re: Encapsuler tout une page dans un try catch

par xTG » 16 janv. 2012, 12:40

Tu n'as pas accès au journal d'erreur de ton serveur ? Car ce que tu veux récupérer par email est contenu dedans.

Encapsuler tout une page dans un try catch

par Tong » 16 janv. 2012, 12:16

Bonjour,

J'ai une page sur un site que je soupçonne de parfois planter dans certains cas. Seulement je n'ai aucune idée pour le moment de comment reproduire le bug ni de quand il se produit (ni même si c'est bien cette page qui pose pb).
De plus, c'est une page assez critique, et j'aimerais être averti par mail chaque fois que son chargement se fait de manière incomplete, le code de cette page se finit par une redirection, et j'aimerais être sûr à 100% que cette redirection est bien executé dans tout les cas.

Puis-je encapsuler alors tout le code de cette page de cette manière:

Code : Tout sélectionner

try { /*contient tout le code de cette page, redirection comprise */ } catch (Exception $e) { envoi_mail_erreur($e->getMessage()); }
?

Merci à vous!