Fatal error: Allowed memory size of 33554432 bytes exhausted

Fatal error: Allowed memory size of 33554432 bytes exhausted - PHP - Programmation

Marsh Posté le 27-05-2009 à 09:03:28    

Bonjour,
 
Je développe un site PHP/MySQL, une de ses fonctions est de générer un fichier Excel (d'environ 450Ko donc assez gros) à partir d'informations dans la base de données.
Tout marche bien quand je teste en local, sous Windows, avec XAMPP. En revanche, après avoir basculé mon site sur le 'vrai' serveur (Linux Debian, config matérielle bien plus puissante que mon PC de test avec XAMPP), la génération de ce fichier Excel plante !
 
Il me renvoie comme erreur:

Code :
  1. Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 46 bytes) in /var/www/pilotage/modules/inplanning.php on line 214


 
La ligne 214 de inplanning.php c'est

Code :
  1. $liste = $query-> fetchAll() ;


 
Après quelques recherches, j'ai vu qu'il devait s'agir du fichier php.ini, mais le memory_limit est déjà fixé à 128M... (dans les deux php.ini, l'un était dans /etc/php5/cli l'autre dans /etc/php5/apache2)
 
Est-ce que quelqu'un a une idée de la source du problème ?

Reply

Marsh Posté le 27-05-2009 à 09:03:28   

Reply

Marsh Posté le 27-05-2009 à 09:27:22    

Essaie de l'augmenter à 256Mo un coups. Si ca se trouve le reste de ton code prend déjà tellement de place que cette génération est la goute d'eau qui fait déborder le vase


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 27-05-2009 à 09:56:55    

On vient de tester (mon collègue a mis 240M) mais ça n'a rien changé... C'est bien embêtant parce que sur internet tout le monde parle de ce php.ini... mais chez nous qu'on mette 1M ou 200M ça change rien ! (pourtant on redémarre le serveur à chaque modif).
Une autre idée ? On ne sait vraiment plus où chercher...

Reply

Marsh Posté le 27-05-2009 à 10:31:48    

bon je viens de faire un

Code :
  1. ini_set("memory_limit","128M" );


 
et là maintenant ça marche  :heink:  (après plusieurs tests, mon script marche à partir de 38M)
 
pourtant dans le php.ini il y a bien 128M à memory_limit.... cette valeur y est depuis l'install de Debian... à croire que ça charge ce paramètre ailleurs.. mais où ? (la solution du ini_set marche mais si je pouvais faire ça proprement dans les fichiers de config ça m'arrangerait)


Message édité par xphanoo le 27-05-2009 à 10:32:19
Reply

Marsh Posté le 27-05-2009 à 11:01:49    

Tu es sûr que c'est bien ce PHP.ini là qui est considéré ?
Tu as fait un phpinfo(); pour le contrôler?


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 27-05-2009 à 13:27:15    

Euh, je dis sa comme sa, mais bon, le /etc/php/cli/php.ini c'est pour la ligne de commande...

Reply

Marsh Posté le 27-05-2009 à 14:19:03    

Sinon il est peut-être possible d'éviter d'utiliser fetchAll ?

Reply

Marsh Posté le 28-05-2009 à 09:03:40    

oui je viens de vérifier, c'est celui-ci: /etc/php5/apache2/php.ini
m'enfin celui-là était déjà fixé à 128M de toute façon...
bon tant que la solution du ini_set fonctionne... on prévoit de faire une réinstall complète du serveur dans un petit moment.
pour le fetchall je pense pas que je puisse m'en passer.. à moins que je m'amuse à renvoyer les résultats en plusieurs bouts, mais bon c'est du bricolage^^


Message édité par xphanoo le 28-05-2009 à 09:04:02
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed