Question

Disons que j’ai un script qui interroge longuement le serveur pour vérifier si l’utilisateur a de nouveaux messages. Côté serveur serait quelque chose comme ça

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

Qui vérifie la base de données 5 fois et chaque fois s’il n’ya pas de changement, il attend 5 secondes avant la prochaine vérification, ce qui donne un temps d’exécution maximal d’environ 25 secondes.

Que se passe-t-il lorsque le client passe d'une page à une autre très rapidement? Je suppose que le script de serveur continue à s'exécuter même après le déplacement du client vers une page différente, où il envoie une autre demande de modification.

Cela signifie-t-il que, lorsque de nombreuses personnes se déplacent rapidement sur le site (moins de 25 secondes maximum d'exécution sur chaque page), le serveur doit continuer à exécuter tous les scripts qui tentent de répondre aux pages qui ne le sont pas? n'existe plus? Cela ne ferait-il pas que le serveur utilise tout son pool de threads assez rapidement?

Était-ce utile?

La solution

Dans un modèle thread-per-connection avec des appels de veille synchrones, cela peut en effet bloquer un grand nombre de threads. Cependant, si le "sommeil" planifie simplement un rappel et retourne, le log-pool de pool de threads peut être évité.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top