2009-09-17 7 views
0

Dans mon application Web, j'ai des formulaires et, en fonction de ces formulaires, les utilisateurs génèrent des fichiers Excel et graphiques (.xls et .png). Chaque utilisation doit générer au moins 2 fichiers Excel et 5 fichiers PNG.Lorsqu'une application Web génère dynamiquement des fichiers Excel et des images

Le problème est que lorsque vous êtes sur le point de générer ces fichiers, il faut 2 secondes pour un fichier Excel et 1 seconde pour un graphique. J'utilise les bibliothèques PHPExcel et pcharts.

Pouvez-vous me donner quelques idées sur la façon d'optimiser cette tâche?

+0

essayez d'identifier d'abord où est votre goulot d'étranglement (base de données lente, code php lent ...) – Keeper

+0

pouvez-vous essayer de profiler votre code pour être sûr quelle partie prend le plus de temps ... – RageZ

Répondre

1

Le temps de génération dépend certainement du nombre d'enregistrements avec lesquels vous travaillez.
Supposons que ce nombre est dans une petite plage ..

Option 1

1 seconde pour la génération graphique est ok. Pour les fichiers Excel - non.
Eventuellement la bibliothèque PHPExcel est celle que vous voudrez peut-être remplacer par vos propres fonctions pour accélérer la génération de fichiers xls. Découvrez here. J'ai utilisé des fonctions de cet article avant et ils fonctionnent comme un charme. Bien sûr, si vous avez besoin de formater correctement vos données, vous êtes obligé d'utiliser PHPExcel et cela n'a rien à voir avec cela.

Option 2

Cache vos fichiers côté serveur.
Par exemple, une fois que vous avez généré chart/xls, vous pouvez l'enregistrer à l'endroit approprié, et lorsque l'utilisateur demande plus tard le même diagramme/xls, il n'est pas nécessaire de le reconstruire.

+0

Many thx Andrejs. J'aime vos deux options. Qui peut me donner des liens sur cette procédure de mise en cache? –

+0

Je doute que vous trouverez une solution de copier-coller. Vous avez besoin de cet outil par vous-même car c'est quelque chose de très spécifique au projet. –

Questions connexes