Показать сообщение отдельно
  #1 (permalink)  
Старый 23.08.2011, 21:46
Кандидат Javascript-наук
Отправить личное сообщение для nyols Посмотреть профиль Найти все сообщения от nyols
 
Регистрация: 16.02.2011
Сообщений: 134

Длительные опросы. Подвисание,
Для обновления сообщений чата, использую "Длинные опросы (long poll)". Все работает как надо и сообщения обновляются. Но проблема в том что, когда пытаешься обновить страницу (F5) то ожидание ответа от сервера длится около 10-20 секунд. Если же перейти на другую страницу (где нет чата) то она тоже долго грузится, но последующие страницы уже нормально. Если вернутся обратно на страницу с чатом, то опять все долго при обновлениях.
Если же не использовать длинные опросы. А просто:
Отправить запрос - получить ответ (обработать ответ) - через пару секунд опять отправть и т.д. То все нормально.

Задержку на сервере делаю так:
$time = time();
while(true) {
   // Тут получаю данные.
   if (count($messages) < 1 && time()-$time < 20)
      sleep(2);
   else
      break;
   // Если есть хоть одно сообщение или скрипт работает уже больше 20 секунд, то прерываю его работу, иначе останавливаю работу скрипта на 2 секунды, и по новой.
}
echo json_encode($messages);

Хочу еще раз обратить внимание, что в скрипте все в порядке (если появляется сообщение или прошло 20 секунд то он прекращает работу как надо) и после получения ответа я через пол секунды отправляю еще раз запрос.


В чем же может быть причина что подвисает загрузка страниц ?

Последний раз редактировалось nyols, 23.08.2011 в 21:55.
Ответить с цитированием