Показать сообщение отдельно
  #29 (permalink)  
Старый 27.04.2012, 22:43
Интересующийся
Отправить личное сообщение для bombascter Посмотреть профиль Найти все сообщения от bombascter
 
Регистрация: 19.07.2010
Сообщений: 23

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

Принять запрос (посетитель подключился к чату)
Ждать, пока появится сообщение
Получив сообщение, сгенерировать на его основе ответ
Выдать ответ
(Зависит от реализации) Закрыть соединение
Как правило, большую часть времени соединение висит в ожидании события. При этом выделенный процесс или даже поток на такое соединение - колоссальный перерасход ресурсов, прежде всего - памяти.

Одновременно подключенные к серверу 100 человек при классическом подходе дали бы 100 процессов(или потоков), большая часть которых будет висеть и ждать сообщения. Это достаточно большие затраты памяти, да и процессорное время тоже тратится, хотя и не в такой степени.

Проблема становится очевиднее при цифрах в 1000, 10.000 соединений, которые вполне достижимы в проектах, рассчитанных на большое количество одновременных пользователей: чаты, онлайн-игры, сайты знакомств и др.

Существует много COMET-серверов, но все они основаны на всего нескольких паттернах преодоления этой проблемы.
Ответить с цитированием