2009-09-14 9 views
2

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

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

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

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

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

ответ

4

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

 Смежные вопросы

  • Нет связанных вопросов^_^