PHPExcel : problème de temps d'exécution sur le serveur

PHPExcel : problème de temps d'exécution sur le serveur - PHP - Programmation

Marsh Posté le 06-03-2008 à 11:29:36    

Bonjour,
 
je dois réaliser en PHP un export de données sous forme de fichier Excel.
J'ai regardé différentes classes PHP existantes permettant de réaliser ce genre de choses et j'ai retenu pour mes tests "PHPExcel" :
http://www.codeplex.com/PHPExcel
 
PHPExcel semble me convenir pour plusieurs raisons :
- ajout d'images dans une page Excel
- mise en page possible
- peut générer des fichiers Excel 2005, Excel 2007, Excel Html, etc...
- des exemples précis fournis et une doc assez claire
 
Les utilisateurs à venir ayant la version 2005 d'Excel, j'ai choisi de générer des fichiers au format Excel 2005.
Les fichiers générés comportent de nombreuses images : une image (environ 100 ko) par ligne pour des fichiers pouvant contenir une bonne centaine de lignes.
 
Pour mon test, j'ai utilisé leur exemple 14excel5.php qui comporte quelques images. Je ne réussis alors pas à générer mon fichier car le temps d'exécution maximal du serveur est atteint ( message d'erreur : "Maximum execution time of 180 seconds exceeded" ).
Si je supprime deux des quatre images de cet exemple, j'arrive à générer le fichier qui est lisible et correct par la suite. Ça fait quand même très long trois minutes pour mettre deux petites images dans un fichier Excel ! Je ne vois pas quel peut être le problème (un paramètre du serveur, la lib GD de PHP ?), c'est pour cela que je me tourne vers vous.
 
Pour information, je développe sous Windows XP en PHP 5.2.0, j'utilise Wamp (Apache2). Mon code doit ensuite se retrouver sur un serveur linux (Apache2 aussi).
 
Je vous remercie d'avance des réponses que vous pourrez m'apporter.
Je suis preneuse de toute information concernant l'export de fichier vers Excel :)


---------------
Avant de savoir, on ne sait pas.
Reply

Marsh Posté le 06-03-2008 à 11:29:36   

Reply

Marsh Posté le 06-03-2008 à 13:32:23    

Tu peux essayer de modifier ton php.ini :

Code :
  1. max_execution_time = 0     ; Maximum execution time of each script, in seconds


 
Sinon si cela t'es impossible, passe par les fonctions php ini_alter() ou ini_set() :

Code :
  1. ini_alter('max_execution_time', '0')


Message édité par CyberDenix le 06-03-2008 à 13:33:09

---------------
Directeur Technique (CTO)
Reply

Marsh Posté le 06-03-2008 à 14:45:51    

Si je mets le max_execution_time à 0, il n'y a plus de limite de temps d'exécution et donc ça marche sans problème si ce n'est le temps que ça met !
J'ai mis trois images et la génération du fichier a pris 6 minutes 40 secondes ! C'est énorme pour de si petites images ! Le fichier excel pèse au final 240 ko.
 
Je cherche vraiment à diminuer ce temps de génération de fichier car ça ne me semble pas normal, personne n'utiliserait ce PHPExcel si c'était aussi long et moi la première d'ailleurs. Le problème c'est que je ne vois pas quel peut être le problème :)


---------------
Avant de savoir, on ne sait pas.
Reply

Marsh Posté le 06-03-2008 à 21:45:13    

Si ta classe Excel est trop lente, je te conseille de générer toi-même ton fichier Excel en étudiant le langage XML utilisé par Microsoft.
 
Par exemple pour Excel 2003 (reconnu aussi dans 2007), il faut utiliser le SpreadSheetML.
 
Pour les images tu auras (peut-être, j'en sais rien  :D ) besoin du module GD2 de php.


Message édité par CyberDenix le 06-03-2008 à 21:46:51

---------------
Directeur Technique (CTO)
Reply

Sujets relatifs:

Leave a Replay

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