2009-07-16 3 views
0

Ich frage mich manchmal, was passiert, wenn Sie ein Formular mehrmals senden und der Internet-Server die vorherige Anfrage verarbeitet? Gibt es irgendwelche Probleme, die in irgendeiner speziellen Bedingung verursacht werden können?Mehrere Anfragen an Internet Server gleichzeitig vom gleichen Browser

Bearbeiten Irgendwelche Probleme auf der Clientseite? zum Beispiel wenn der Webserver zwei Antworten sendet?

Antwort

2

Jedes Formular wird separat verarbeitet, möglicherweise viele parallel. Abhängig von Ihrer Anwendung kann dies Daten serverseitig beschädigen oder nicht. Das serverseitige Skript beendet möglicherweise die Verarbeitung, wenn die HTTP-Verbindung getrennt wird (beim erneuten Klicken auf "Senden" wird die erste Anforderung abgebrochen und eine neue Anforderung gesendet).

Um Probleme mit mehreren Übermittlungen zu vermeiden, können Sie beispielsweise eine eindeutige ID mit dem Formular senden, das auf dem Server geprüft wird und nur einmal verwendet werden kann. Oder Sie können in der Sitzung des Benutzers ein Flag für die bereits vorhandene Verarbeitung festlegen. Oder Sie können mit Job-Queues arbeiten und prüfen, ob bereits ein Job für den Benutzer existiert. Die Einzelheiten würden von Ihrer Anwendung abhängen.

Re: "Irgendwelche Probleme auf der Clientseite? Zum Beispiel, wenn der Webserver zwei Antworten sendet?"

Wenn Ihr Browser eine Anfrage sendet, baut er eine Verbindung zum Server auf, auf dem er auf eine Antwort wartet. Neue Anfrage, neue Verbindung. Wenn Sie ein zweites Mal auf eine Senden-Schaltfläche klicken, wird die erste Verbindung gelöscht und eine neue Verbindung hergestellt (dies ist auch der Punkt, an dem der Server die Verarbeitung der alten Anforderung normalerweise nicht mehr fortsetzt). Deshalb können Sie mehrere Seiten der gleichen Website gleichzeitig in einen Browser laden. Es wird nicht verwechselt, welche Antwort in welche Registerkarte gelangen soll.

0

Auf E-Commerce-Websites haben Menschen versehentlich mehrere Male gekauft, weil sie ungeduldig waren und den Absenden-Knopf gedrückt haben, bevor sie auf die (manchmal langsame) Antwort warteten.

Es ist eine gute Idee, die Senden-Schaltfläche zu deaktivieren, nachdem sie in dieser Art von Anwendung gedrückt wurde.

+0

Das Deaktivieren des Senden-Buttons ist keine besonders zuverlässige Lösung, aber es ist eine weitere Sache, die Sie tun können. – deceze

0

Eine einfache Lösung, die keine sorgfältige Synchronisierung oder Koordination zwischen Threads erfordert, ist das Abstimmen von Aktionen, die im Nachhinein zu dicht aufeinander folgten. Hat ein Nutzer auf zwei Anzeigen in einer halben Sekunde geklickt? Unwahrscheinlich besuchten sie tatsächlich die erste Seite. Hat ein Benutzer zwei Bestellungen für die gleiche Tüte Ware im Abstand von einer Minute aufgegeben? Wahrscheinlich ein Fehler.

Solange Sie eine Möglichkeit haben, identische Ereignisse oder sogar "von der gleichen Person" zu nahe beieinander zu identifizieren, können Sie diese Technik verwenden.

Verwandte Themen