Вопрос

Скажем, у меня есть скрипт, который выполняет длинный опрос на сервере, чтобы проверить, есть ли у пользователя какие-либо новые сообщения. На стороне сервера будет что-то вроде этого

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

Который проверяет базу данных 5 раз и каждый раз, если нет изменений, он ждет 5 с до следующей проверки, что приводит к максимальному времени выполнения около 25 с.

Что происходит, когда клиент очень быстро перемещается с одной страницы на другую? Я полагаю, что серверный скрипт продолжает работать даже после перехода клиента на другую страницу, где он отправляет еще один запрос на изменения.

Означает ли это, что когда большое количество людей быстро перемещается по сайту (не более 25 с на каждой странице), тогда сервер должен продолжать запускать все сценарии, которые пытаются ответить на страницу, которая не больше не существует? Разве это не заставит сервер использовать весь пул потоков довольно быстро?

Это было полезно?

Решение

В модели потоков на соединение с синхронными вызовами ожидания это действительно может связать большое количество потоков. Однако, если «спать» просто запланирует обратный вызов и возврат, можно избежать logjam пула потоков.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top