Question

Je dois générer des rapports de différents types de fichiers (Excel, pdf, png), sur la base des entrées d'une application Web. L'application est écrit en PHP sur un serveur web apache.

ATM, lorsque les utilisateurs visitent la section des rapports, ils déclenchent l'événement qui vérifie s'il y a de nouvelles données dans PRÉSENTÉS la base de données et sur cette information, les nouveaux fichiers de rapport sont générés. Cela rend l'utilisateur d'attendre jusqu'à ce que les fichiers sont générés (3-10seconds), ce qui est pas une bonne approche du tout, donc je besoin des conseils que vous pouvez me donner.

Était-ce utile?

La solution

Bien sûr cela dépend vraiment de votre application et votre système, mais en général ce que je fais est que j'ai une tâche cron qui exécute un script PHP pour générer des rapports périodiques. La sortie pourrait être enregistré dans le système de fichiers ou dans une base de données. De cette façon, mes rapports ne sont générés une fois (plutôt que chaque fois qu'un utilisateur essaie de les télécharger) et ils ne sont générés en cas de besoin (votre script peut vérifier si elle a besoin de générer un rapport basé sur ce que les critères changement que vous avez, ou vous pouvez mettre juste à générer de nouveaux rapports entiers périodiquement). Pour le garder très simple il suffit d'appeler votre page Web en cours avec wget ou curl, et créer une nouvelle page sur votre serveur web pour télécharger les rapports enregistrés.

Le seul problème avec cette approche est les utilisateurs peuvent télécharger des rapports « périmées » (les données ont changé, mais les rapports n'ont pas été mis à jour). Si cela est vraiment une question autre approche serait de garder un script PHP en cours d'exécution dans la vérification de fond pour les données modifiées et les rapports de production au besoin.

Une autre approche est que vous pouvez simplement continuer à générer des rapports lorsque vos utilisateurs tentent de les télécharger, mais cache les résultats. Encore une fois en utilisant vos propres critères spécifiques de l'application vous vérifier si le rapport mis en cache est assez bon pour téléchargement immédiat, ou générer un nouveau rapport et mettre en cache. Vous pouvez même combiner avec la première approche en générant périodiquement de nouveaux rapports, mais si un utilisateur tente de télécharger un rapport qui est à jour générer immédiatement un nouveau (l'utilisateur faisant attendre 3-10 secondes).

En fin de compte, il dépend de votre système et votre application.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top