Frage

Sagen wir, ich Skript haben, das lange Abfrage auf dem Server hat zu überprüfen, ob Benutzer keine neuen mesages hat. Server-Seite würde so etwas wie diese

while counter < 5
    if something_changed
        push_changes_to_client
        break
    else
        counter++
        sleep 5

Welche prüft Datenbank 5 mal und jedes Mal, wenn es keine Änderung gibt, es 5s, bis nächste Prüfung, die in maximaler Ausführungszeit von ca. 25s Ergebnissen wartet.

Was passiert, wenn der Client von einer Seite zur anderen bewegt wirklich schnell? Ich nehme an dem Script Server behält auch nach dem Client-Umzug in anderer Seite ausgeführt wird, wo es eine weitere Anforderung für Änderungen sendet.

Bedeutet dies, dass, wenn viele Leute schnell rund um die Seite (auf jeder Seite weniger als die 25s max Ausführung) bewegt, dann wird der Server zu halten, hat alle Skripte ausgeführt, die auf Seite zu reagieren versuchen, die doesn ‚existiert t mehr? Wäre dies nicht der Server dazu bringen, alles zu verwenden, ist Thread-Pool ziemlich schnell?

War es hilfreich?

Lösung

In einem Thread-per-Verbindungsmodell mit Synchron Schlaf Anrufen, kann dies in der Tat eine große Anzahl von Fäden binden. Wenn das jedoch „schlafen“ einfach plant einen Rückruf und kehrt, kann der Thread-Pool logjam vermieden werden.

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