Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > Bureautique
Bureautique Forum d'entraide sur la gestion dynamique de documents de bureautique (Word, Excel, OpenOffice...) avec PHP. Avant de poster -> Cours Excel, FAQ OpenXML, FAQ OpenDocument
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/03/2011, 10h59   #1
Invité de passage
 
Inscription : mars 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 3
Points : 2
Points : 2
Par défaut PhpExcel => out of memory

Bonjour à tous,

Je suis confronté à ce problème sur PHPExcel depuis quelques temps.

Je plante le décor :
Plateforme : Iseries (AS400 quoi)
Base de donnée DB2
Php par Zend version 5.3
memory limit du php.ini mis à 10Go (pour le reste j'en parle meme pas...)

Je soumet un script php pas mon scheduler qui génère mon fichier xls que je transmet ensuite par mail.

A la fin de mon script, j'ai le fameux message "Out of memory (allocated 258998272) (tried to allocate 35 bytes)". Que je vois dans un fichier spoule généré par mon scheduler.

L'AS/400 ayant pas mal de ressources j'ai mis dans le fichier php.ini à plus de 10Gb, bref j'ai augmenter les limites ressources de façon considérable.

Le problème persiste et mon fichier excel ne se génère pas. Test sur un evironnement plus petit ça marche très bien, mais s'il ne faut pas dépasser 2mb pour un document Excel, PHPExcel n'a pas d'intérêt.

J'ai reluqué pas mal sur le web sans vraiment trouver de solution.

C'est pour ça que je fais appel à ceux qui peuvent et veulent me répondre ici.

Merci d'avance en tout cas.

Jean-Marc
JeuMeu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/03/2011, 11h09   #2
Expert Confirmé
 
Avatar de grunk
 
Homme Olivier
Développeur Web
Inscription : août 2003
Messages : 1 837
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 27
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Activité : Développeur Web
Secteur : Industrie

Informations forums :
Inscription : août 2003
Messages : 1 837
Points : 3 318
Points : 3 318
Plutot que de positionner memory_limit à 10Gb essai plutot de le mettre à -1.
Ca fera sauter la limite.
Par contre soit sur que ton script ne tombe pas dans une boucle infinie ou un truc du genre histoire de pas crasher le serveur

Une fois le serveur redémarré vérifie la mémoire consommée par ton script via memory_get_peak_usage tu pourras alors adapter plus finement ton memory_limit (surtout ne pas le laisser à -1 )
grunk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/03/2011, 11h10   #3
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Il y a beaucoup de discussion sur le sujet sur
http://phpexcel.codeplex.com
avec plus ou moins de solutions.

Dans mon cas, j'ai abandonné, il m'était impossible d'ouvrir des fichiers de plusieurs mégas.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/03/2011, 14h48   #4
Invité de passage
 
Inscription : mars 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 3
Points : 2
Points : 2
Citation:
Envoyé par grunk Voir le message
Plutot que de positionner memory_limit à 10Gb essai plutot de le mettre à -1.
Ca fera sauter la limite.
Par contre soit sur que ton script ne tombe pas dans une boucle infinie ou un truc du genre histoire de pas crasher le serveur
...
Merci, j'avais pas songé à mettre -1....
Quoiqu'il en soit, rien a faire toujours même message (après stop/start d'apache et zendsvr (php)).

Je sais plus trop quoi faire.... Dommage, j'aime bien phpexcel.

Merci encore.

Jean-Marc
JeuMeu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/03/2011, 15h33   #5
Invité de passage
 
Inscription : mars 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 3
Points : 2
Points : 2
Citation:
Envoyé par JeuMeu Voir le message
Merci, j'avais pas songé à mettre -1....
Quoiqu'il en soit, rien a faire toujours même message (après stop/start d'apache et zendsvr (php)).
...
Bon ben laissez tomber.... trouvé.
Je pense que le fait de vous demander m'a aider inconsciemment... merci en tout cas.

La solution était d'ajouter ces lignes

Code :
1
2
3
$cacheMethod = PHPExcel_CachedObjectStorageFactory:: cache_to_phpTemp;
	$cacheSettings = array( ' memoryCacheSize ' => '1024MB');
	PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings);
avant la déclaration de mon fichier excel ($toto = new PHPExcel

Ça a suffit. J'ai pris large semble-t-il avec 1024Mb mais bon, je peux le faire.

A bientôt pour de nouvelles aventures...

JeuMeu
JeuMeu est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h00.


 
 
 
 
Partenaires

Hébergement Web