Domanda

Supponi di avere uno script, che esegue un polling lungo sul server per verificare se l'utente ha nuovi messaggi. Il lato server sarebbe qualcosa del genere

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

Che controlla il database 5 volte e ogni volta che non ci sono cambiamenti, attende 5 secondi fino al prossimo controllo, il che si traduce in un tempo di esecuzione massimo di circa 25 secondi.

Cosa succede quando il client si sposta rapidamente da una pagina all'altra? Suppongo che lo script del server continui a funzionare anche dopo lo spostamento del client in un'altra pagina, dove invia un'altra richiesta di modifiche.

Questo significa che quando molte persone si spostano rapidamente all'interno del sito (meno dell'esecuzione massima di 25 secondi su ogni pagina), il server deve continuare a eseguire tutti gli script, che stanno cercando di rispondere alla pagina che non non esiste più? Questo non farebbe in modo che il server utilizzi tutto il suo pool di thread abbastanza velocemente?

È stato utile?

Soluzione

In un modello thread-per-connessione con chiamate sleep sincrone, questo può effettivamente legare un gran numero di thread. Tuttavia, se "dormi ""; pianifica semplicemente una richiamata e restituisce, il logjam del pool di thread può essere evitato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top