Page 1 sur 1
Comment traiter les erreurs fatales type "Allowed Memory" ?
Posté : 13 sept. 2011, 16:35
par opusdei
Bonjour,
Je cherche un moyen pour traiter les erreurs fatales de PHP, en particulier celles engendrées lors d'un traitement d'image. Il peut m'arriver d'avoir à gérer le type d'erreur suivant : "Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 2304 bytes) in /home/site/www/upload.php on line 64"
Je souhaiterais qu'au lieu d'afficher l'erreur, je puisse faire un echo personnalisé ou une redirection par exemple.
Je souligne que ma question concerne bien le traitement des erreurs, et non l'allocation de mémoire dans php.ini.
Merci à tous !
Re: Comment traiter les erreurs fatales type "Allowed Memory
Posté : 13 sept. 2011, 16:41
par macgawel
Bonjour.
Tu peux peut-être regarder la fonction
set_error_handler().
Ou le sujet
Collecter des messages d'erreur...
Re: Comment traiter les erreurs fatales type "Allowed Memory
Posté : 13 sept. 2011, 17:23
par Gofromiel
Tu ne peux rien faire contre les erreurs fatales, si tu manques de mémoire essaie d'en demander d'avantage e.g. ini_set('memory_limit', '64M'), même si ce n'est pas ce que tu as demandé c'est la seule solution.
Maintenant, si tout ce que tu souhaite c'est être "informé" lorsque ces erreurs se produisent, utilise la fonction "register_shutdown_function()" pour ajouter une fonction de rappel à la procédure de fermeture de PHP, tu pourras alors vérifier si une erreur s'est produite et envoyer un e-mail par exemple :
https://github.com/ICanBoogie/ICanBoogi ... ug.php#L62
Les erreurs fatales sont fatales, c'est comme ça.
Re: Comment traiter les erreurs fatales type "Allowed Memory
Posté : 13 sept. 2011, 17:45
par opusdei
Merci pour votre aide, ça devrait le faire !
Re: Comment traiter les erreurs fatales type "Allowed Memory
Posté : 20 sept. 2011, 17:06
par devlop78
Register_shutdown ne respecte pas le max_timeout, ce serait drole de voir comment il respecte la mémoire ... Car s'il est appelé à la fin d'un script qui déborde la mémoire, et que lui même essaie d'utiliser la mémoire (tout est mémoire, écrire dans un fichier nécessite de la mémoire), blang baf ...
Peut-être initialiser une variable au début du script de 10 Ko, et la libérer à l'appel de register_shutdown, pour pouvoir avoir assez de ressources (il y a des chances qu'avant un débordement de mémoire vers l'erreur, php effectue déjà un appel au GC).
Enfin, je dis ça, pour le coup je n'en sais strictement rien, mais ça vaudrait le coup de faire l'expérience.
Re: Comment traiter les erreurs fatales type "Allowed Memory
Posté : 24 sept. 2011, 20:41
par sirakawa
La kalachnikov, ya que ça de vrai...
Re: Comment traiter les erreurs fatales type "Allowed Memory
Posté : 24 sept. 2011, 21:45
par devlop78
Si tu le dis. Mais quel rapport ?
Re: Comment traiter les erreurs fatales type "Allowed Memory
Posté : 25 sept. 2011, 14:15
par sirakawa
Toutes les erreurs se traitent par leur élimination, quel que soit leur domaine, leur cause, leur raisons. Or le moyen le plus universel, le plus solide, le plus facile à entretenir est connu pour être la kalachnikov. Si ce n'est pas en rapport, je veux bien devenir pape...
Re: Comment traiter les erreurs fatales type "Allowed Memory
Posté : 25 sept. 2011, 15:36
par xTG
Avec une kalachnikov on transforme les problèmes en confettis.
Et les confettis c'est pas bon dans la machine...
Re: Comment traiter les erreurs fatales type "Allowed Memory
Posté : 25 sept. 2011, 19:08
par devlop78
Faut arrêter la télé ... Cette arme n'est pas la meilleure, quelque soit le critère, elle est juste bonne, facile à construire donc peu chère, et mythique. Elle ne convient pas aussi à tous les domaines, comme la longue distance, ou comme l'informatique. Ca peut être bien de délirer au moins dans un sujet qui a un rapport ...