Frage

Ich muss einige Berichte über verschiedene Dateitypen (Excel, PDF, PNG) erstellen, basierend auf den Eingaben einer Webanwendung. Die Anwendung ist in PHP auf einem Apache -Webserver geschrieben.

ATM, wenn Benutzer den Abschnitt "Berichte" besuchen, lösen sie das Ereignis aus, das überprüft, ob in der Datenbank neue Daten übermittelt werden, und basierend auf diesen Informationen werden die neuen Berichtsdateien generiert. Dies lässt den Benutzer warten, bis die Dateien generiert sind (3-10 Sekunden). Was ist überhaupt kein guter Ansatz, also brauche ich einen Rat, den Sie mir geben können.

War es hilfreich?

Lösung

Natürlich hängt es wirklich von Ihrer Anwendung und Ihrem System ab, aber normalerweise habe ich einen Cron -Job, der ein PHP -Skript ausführt, um regelmäßig Berichte zu generieren. Die Ausgabe kann im Dateisystem oder in einer Datenbank gespeichert werden. Auf diese Weise werden meine Berichte nur einmal generiert (anstatt jedes Mal, wenn ein Benutzer sie herunterladen versucht) und sie nur bei Bedarf generiert werden (Ihr Skript könnte überprüfen, ob es einen Bericht erstellen muss, der auf den von Ihnen vorliegenden Änderungskriterien basiert, oder Sie könnten Sie könnten Richten Sie es einfach ein, um ganz neue Berichte regelmäßig zu erstellen). Um es wirklich einfach zu halten, rufen Sie einfach Ihre aktuelle Webseite mit WGet oder Curl an und erstellen Sie eine neue Seite auf Ihrem Webserver zum Herunterladen der gespeicherten Berichte.

Das einzige Problem mit diesem Ansatz ist, dass Benutzer "abgestandene" Berichte herunterladen könnten (Daten haben sich geändert, aber die Berichte wurden nicht aktualisiert). Wenn dies wirklich ein Problem ist, wäre ein anderer Ansatz darin, ein PHP -Skript in der Hintergrundüberprüfung auf geänderte Daten und das Generieren von Berichten nach Bedarf zu führen.

Ein weiterer Ansatz ist, dass Sie einfach weiterhin Berichte generieren können, wenn Ihre Benutzer versuchen, sie herunterzuladen, aber die Ergebnisse zwischenspeichern. Wenn Sie erneut Ihre eigenen anwendungsspezifischen Kriterien verwenden, prüfen Sie, ob der zwischengespeicherte Bericht gut genug für den sofortigen Download ist, oder einen neuen Bericht generieren und diese ausspeichern. Sie könnten dies sogar mit dem ersten Ansatz kombinieren, indem Sie regelmäßig neue Berichte generieren. Wenn ein Benutzer jedoch versucht, einen Bericht herunterzuladen, der veraltet ist, generiert sofort eine neue (so dass der Benutzer 3-10 Sekunden wartet).

Letztendlich hängt es von Ihrem System und Ihrer Anwendung ab.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top