2016-07-27 15 views
0

Ich habe einige PHP-App. Im Moment entwickle ich einen Teil, bei dem ein Benutzer eine Anfrage/ein Formular über Ajax (jQuery) an den Server sendet. Der Server wird Tausende von Datensätzen in die MySQL-Datenbank einfügen, die wahrscheinlich einige Minuten dauern (aufgrund verschiedener Berechnungen usw.).Wie verfolgen Sie den Fortschritt der Anfrage, die über jQuery (ajax) an den Server gesendet wird?

Frage: Gibt es eine Möglichkeit, den Fortschritt von Updates auf der Serverseite zu verfolgen? Ich verstehe, dass ich eine Ausgabe schreiben kann, wenn alles fertig ist. Eine Workaround wäre etwa: - irgendwo speichern Session-ID plus Fortschritt Details (Beispiel: verarbeitete 3k Einsätze von 5k - vielleicht in einigen Fortschritt Tabelle in der Datenbank - haben Front-End jQuery-Skript fordert diese Informationen vom Server alle 10 Sekunden oder so ...

Irgendwelche Ideen? Wenden Sie sich bitte jede Frage stellen Sie haben können. Danke.

+2

Ihre Idee ist so ziemlich die einzige Möglichkeit, dies zu tun. Das Fortschrittsereignis des XHR verfolgt nur den Status der Datei, während sie hochgeladen wird, und keine Arbeit, die auf dem Server als Ergebnis der Anfrage ausgeführt wird. –

+0

@Rory McCrossan Das ist, was ich dachte. Wird daran arbeiten. Vielen Dank. – virrion

Antwort

1

Während ich weiß nicht, die Besonderheiten von dem, was Sie serverseitige tun, ein Skript, das Das Ausführen eines "Paares" dauert wahrscheinlich mehrere verschiedene Schritte. Es kann sinnvoll sein, das Skript einen Schritt nach dem anderen ausführen zu lassen, sein Ergebnis zurückzugeben und dann erneut aufgerufen zu werden, um den nächsten Schritt auszuführen.

Mithilfe eines Prozesses wie diesem können Sie den Fortschritt auf der Clientseite verfolgen. Wenn der Client das Browserfenster schließt oder die Seite mit Ihrem Ajax-Code verlässt, werden die verbleibenden Schritte nicht ausgeführt.

+0

Im Wesentlichen gibt es einige Auswahlen plus zusätzliche mathematische Berechnungen. Für jedes ausgewählte Paar werden zusätzliche Datensätze eingefügt. Es muss eine gespeicherte Prozedur sein, andernfalls könnte es zu einem teilweise vollständigen Prozess führen. Vielen Dank. – virrion

+0

Wenn Sie es so machen wollten, wie ich es vorschlage, würden Sie in temporäre Tabellen schreiben und erst im letzten Schritt in die Live-Tabelle kopieren. –

+0

Eigentlich denke ich, dass ich meine gespeicherte Prozedur haben werde, um den Fortschritt (Beispiel: alle 1k Datensätze oder so) eines Prozentsatzes in einer Tabelle während der Ausführung aufzuschreiben. Und von meinem Front-End konnte ich diese Nummer abrufen, um den Fortschrittsbalken anzuzeigen ... Danke. – virrion

Verwandte Themen