2009-05-12 8 views
1

Situation: ein Benutzer klickt auf einen Link, der Server erhält die Anforderung und beginnt mit der Verarbeitung. In der Zwischenzeit klickt der Benutzer auf einen anderen Link, der Server erhält die neue Anfrage während der Verarbeitung des ersten. Was geschieht? Auf der Client-Seite sehen wir nur die Webseite von der 2. Anfrage, aber ist der Prozess von der 1. Anfrage auf dem Server beim Empfang der 2. Anfrage beendet? Und wird es vom Server oder der Sprache (Apache oder PHP) verwaltet?Verarbeiten von Webanforderungen auf Serverseite

Antwort

5

Hängt davon ab. Wenn der Browser die Verbindung zum Server nicht löscht, hat er absolut keine Ahnung, dass der Client an anderer Stelle navigiert ist. Wenn die Verbindung getrennt wird, muss der Web-Server entscheiden, ob die Verbindung erkannt und der Verarbeitungsthread abgebrochen werden soll oder nicht.

In beiden Fällen ist dies die Natur der Staatenlosigkeit von HTTP. Sie sollten sich in dieser Hinsicht nicht auf etwas verlassen.

1

Beide Anfragen werden bedient (wenn der Browser den zweiten gesendet hat).

Sie würden nur die zweite Seite sehen, aber wenn Sie in access_log nachsehen, werden Sie sicherlich zwei Anfragen bemerken.

So funktioniert HTTP.

0

Sie können ignore_user_abort() verwenden, um einem Skript mitzuteilen, dass es fortgesetzt werden soll (oder nicht), nachdem die Verbindung beendet wurde.

Verwandte Themen