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

  FORUM HardWare.fr
  Programmation
  PHP

  PHP Fatal error - Allowed memory size exhausted

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

PHP Fatal error - Allowed memory size exhausted

n°2199812
jesusdebet​hune
Salut ! ca farte ?
Posté le 09-08-2013 à 15:02:38  profilanswer
 

Bonjour,
 
J'ai un petit soucis sur un serveur Apache/Php.
 
En effet, je rencontre dans les logs ce message d'erreur :
 

Citation :

[Fri Aug 09 14:50:51 2013] [error] [client 10.105.48.4] PHP Fatal error:  Allowed memory size of 268435456 bytes exhausted (tried to allocate 47932639131432 bytes) in Unknown on line 0


 
Apparemment, Apache aurait besoin d'allouer 42 To de mémoire au script.....
 
Voila ce que j'ai déjà exploré comme piste :
 
- Augmentation du "memory_limit" du php.ini (il est actuellement à 256Mo, mais j'ai essayé de le mettre plus haut (jusqu'à 8Go!!) mais j'ai toujours l'erreur).
- Le code php a été revu en long, en large par 3 développeurs différents => RAS. C'est un script simple qui génère des pages xlm avec des 'print'.
- Driver odbc : odbc est utilisé pour attaquer une base sous Oracle. RAS de ce coté là non plus. (pour info les requêtes retournent très peu d'infos. il n'y a pas de pb de ce coté là)
 
Nous avons mis plein de ligne de debug dans le script avec des "memory_limit" et les chiffres sont corrects tout au long de l’exécution...
Le plus étrange, c'est que l'erreur arrive après la fin du script. Les lignes de debug sont formelles...
 
Voici les versions :
 
php -v
PHP 5.3.3 (cli) (built: Jan 20 2011 06:13:52)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
 
apachectl -v
Server version: Apache/2.2.3
Server built:   Jun 16 2011 11:26:48
 
cat /etc/redhat-release
Red Hat Enterprise Linux Server release 5.7 (Tikanga)
 
 
Si quelqu'un a déjà rencontré ce type d'erreur, je serais ravis qu'il me partage sa résolution si il en a trouvé une  :D  
 
 :hello:


Message édité par jesusdebethune le 09-08-2013 à 15:03:39
mood
Publicité
Posté le 09-08-2013 à 15:02:38  profilanswer
 

n°2199819
sltpaulo
Posté le 09-08-2013 à 15:21:04  profilanswer
 

Je pense que le problème viens de ton code, tu dois avoir une boucle qui remplis mal un tableau et du coup le buffer explose, c'est surement un problème d'écriture d'algo,  
 
Le problème arrive souvent quand on traite de grand nombre de données sans regarder l'optimisation (dans mon cas)
 
Bonne chance

n°2199822
jesusdebet​hune
Salut ! ca farte ?
Posté le 09-08-2013 à 15:44:47  profilanswer
 

Merci pour la réponse.
j'ai déjà exploré cette piste, et comme expliqué plus haut, la requête retourne trop peu de données pour demander 42To de mémoire.
 
En plus, cette erreur apparaît après l’exécution du script qui se termine bien...

n°2199824
sltpaulo
Posté le 09-08-2013 à 16:01:33  profilanswer
 

Cette erreur n'apparait uniquement quand le buffer php est plein,  
 
possibilité pour résoudre le problème :
 

  • Augmenter la taille du buffer dans le php.ini (Ici allouer 42To....)
  • Revoir l'algo (surtout au niveau du traitement des infos (optimisation des tableau php))
  • vider le buffer avant la fin d'exécution du script (Attention au variables "magique" (globale,...))
  • Afficher l'état du buffer durant l'exécution du script


En espérant pouvoir aider

n°2199828
jesusdebet​hune
Salut ! ca farte ?
Posté le 09-08-2013 à 16:32:41  profilanswer
 

j'ai ajouté plein de "memory_get_usage()" dans le script pour voir la consommation tout au long de l'execution et les logs me donnent ça :
 
[09/08/2013 11:13:38;] Debut du fichier 5204b2c239759, memory : 1048576
[09/08/2013 11:13:38;{8B4A4698-F8AA-4580-BBA8-A7B37E778092}] APP_ID:38089,DNIS:820002378,DPT:76
[09/08/2013 11:13:38;{8B4A4698-F8AA-4580-BBA8-A7B37E778092}] 38089
[09/08/2013 11:13:38;{8B4A4698-F8AA-4580-BBA8-A7B37E778092}] 820002378
[09/08/2013 11:13:38;{8B4A4698-F8AA-4580-BBA8-A7B37E778092}] 76
[09/08/2013 11:13:38;{8B4A4698-F8AA-4580-BBA8-A7B37E778092}] 38089
[09/08/2013 11:13:38;{8B4A4698-F8AA-4580-BBA8-A7B37E778092}] 744120
[09/08/2013 11:13:38;{8B4A4698-F8AA-4580-BBA8-A7B37E778092}] 743504
[09/08/2013 11:13:38;{8B4A4698-F8AA-4580-BBA8-A7B37E778092}] 744296
[09/08/2013 11:13:38;{8B4A4698-F8AA-4580-BBA8-A7B37E778092}] 743680
[09/08/2013 11:13:38;{8B4A4698-F8AA-4580-BBA8-A7B37E778092}] 744472
[09/08/2013 11:13:38;{8B4A4698-F8AA-4580-BBA8-A7B37E778092}] 743856
[09/08/2013 11:13:38;{8B4A4698-F8AA-4580-BBA8-A7B37E778092}] 745032
[09/08/2013 11:13:38;{8B4A4698-F8AA-4580-BBA8-A7B37E778092}] 744416
[09/08/2013 11:13:38;{8B4A4698-F8AA-4580-BBA8-A7B37E778092}] 745208
[09/08/2013 11:13:38;{8B4A4698-F8AA-4580-BBA8-A7B37E778092}] 744592
[09/08/2013 11:13:38;{8B4A4698-F8AA-4580-BBA8-A7B37E778092}] 745384
[09/08/2013 11:13:38;{8B4A4698-F8AA-4580-BBA8-A7B37E778092}] 744768
[09/08/2013 11:13:38;{8B4A4698-F8AA-4580-BBA8-A7B37E778092}] Requete primaire = SELECT was.PRIMARYIPADDRESS A, was.rootDirectory B, voi.name C FROM VoicesApplications voi,WebApplicationServers was WHERE voi.idWas = was.idWas and voi.IDVOICEAPPLICATION = 38089;
[09/08/2013 11:13:38;{8B4A4698-F8AA-4580-BBA8-A7B37E778092}] URL client primaire = http://195.6.107.97/260/CESU/index.vxml
[09/08/2013 11:13:38;{8B4A4698-F8AA-4580-BBA8-A7B37E778092}] Requete secours = SELECT was.secondaryipaddress A, was.rootDirectory B, voi.name C FROM VoicesApplications voi,WebApplicationServers was WHERE voi.idWas = was.idWas and voi.IDVOICEAPPLICATION = 38089;
[09/08/2013 11:13:38;{8B4A4698-F8AA-4580-BBA8-A7B37E778092}] URL client secours = http://195.6.107.99/260/CESU/index.vxml
[09/08/2013 11:13:38;{8B4A4698-F8AA-4580-BBA8-A7B37E778092}] Fin du fichier 5204b2c239759, memory : 1048576
[09/08/2013 11:13:38;{8B4A4698-F8AA-4580-BBA8-A7B37E778092}] Fin reel du fichier 5204b2c239759, memory : 1048576
[Fri Aug 09 11:13:38 2013] [error] [client 10.105.48.4] PHP Fatal error:  Allowed memory size of 268435456 bytes exhausted (tried to allocate 47131846053256 bytes) in Unknown on line 0

n°2199833
sltpaulo
Posté le 09-08-2013 à 16:49:10  profilanswer
 

Dernière solution que je peux te proposer et de regarder du coté du framework Yii qui permet des optimisations
 
tiens moi au courant de l'évolution.

n°2199835
rufo
Pas me confondre avec Lycos!
Posté le 09-08-2013 à 16:53:58  profilanswer
 

Tu pourrais poster ton code, svp ?
 
Vue la taille demandée que tu pourras jamais allouée (42 To  :ouch: ), y'a clairement un pb de boucle infinie ou de récursivité. Ou alors, ta requête SQL retourne des millions de petits enregistrements.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta

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

  PHP Fatal error - Allowed memory size exhausted

 

Sujets relatifs
[PHP/JS]Envoyer contenu d'une cellule via XMLHttpRequestProbleme connexion PHP
EMPLOI - Développeur PHP H/F - CDI - Tours[PHP/JS]Passage de valeurs php vers une fonction JS
PHP : AUTO-COMPLETION[Résolu][PHP]récupérer tous les mercredis d'une période donnée
[RESOLU] chargement lien PHP par défaut : comment faire?[PHP] Fatal error: Allowed memory size exhausted - script à optimiser?
[PHP] erreur Fatal error: open(O_RDWR) failed for session file...[PHP FREE ] Fatal error: Maximum execution time exceeded
Plus de sujets relatifs à : PHP Fatal error - Allowed memory size exhausted


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