Для обновления сообщений чата, использую
"Длинные опросы (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 секунд то он прекращает работу как надо) и после получения ответа я через пол секунды отправляю еще раз запрос.
В чем же может быть причина что подвисает загрузка страниц ?