[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Чат с высокой нагрузкой
web-monster
Привет! Вообщем сейчас стоит задача реализовать чат на js, в чате первое время будет находится в среднем 200-300 человек. Собственно вопрос как делать запросы чтобы не убить сервак.
Просто если к примеру каждые 5 секунд интервалом делать запрос
setInterval("get_message()", 5000);
function get_message() {
$.post('plugin/chat/chat_func.php?type=get_message', {}, function(data) {
$('#load_message').html(data.html);
});
}

А в php:
function get_message() {
$html = '';
$res = mysql_query("SELECT * FROM chat ORDER by id DESC LIMIT 20");
while($row = mysql_fetch_assoc($res))
{
$html .= '<div>'.$row["message"].'</div>';
}

$result->html = $html;
echo json_encode($result);
}


Это убьёт сервак наверно) 200 человек каждые 5 секунд делают по запросу, это 7000 запросов в минуту пипец..
Подскажите как будет сделать правильно!



Спустя 16 минут, 8 секунд (22.02.2011 - 01:01) jetistyum написал(а):
ну как ни крути, либо сервак брать мощнее, либо обновлять реже.
можно делать какой-то кэш выборки из бд, и отдавать его всем, кто запрашивает
время жизни кэша - 5 сек. кеш хранить в мемкеше например. можно аппликуху в фастцги завернуть... но думаю что даже на обычных запросах, если все более-менее оптимально, сервер не должен умереть.

Спустя 16 минут, 46 секунд (22.02.2011 - 01:18) web-monster написал(а):
Ну как вариант ещё можно передавать id последнего сообщения и дёргать только их. А ещё вопрос как лучше делать, append через jquery или iframe?

Спустя 7 минут, 47 секунд (22.02.2011 - 01:26) web-monster написал(а):
А если например сделать отдельный php скрипт который каждые 5 секунд будет запускаться кроном, выдёргивать последние 50 сообщений и писать их в массив. А все пользователи будут обращаться к этому массиву(фаилу) и брать сообщения оттуда по последнему переданному id?

Спустя 6 часов, 50 минут, 30 секунд (22.02.2011 - 08:16) Семён написал(а):
dklab_multiplexor:

Спустя 42 минуты, 38 секунд (22.02.2011 - 08:59) Snus написал(а):
web-monster
Пишешь в кукис время последнего сообщения и дергаешь, начиная с него. При загрузке страницы пишешь текущее время в кукис.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.