Вообщем для себя пишу простой мини-чат на php & jquery (ajax) Первое что пришло на ум получать содержимое: [js] function show() { $.ajax({ url: "chat.php", cache: false, success: function(html){ $("#chat").html(html); } }); } $(document).ready(function(){ show(); setInterval('show()',1000); });[/js] В файле chat.php выводится через PHP: while ($row = mysql_fetch_row($result)) { ... } Теперь думая насчет нагрузки.. Каждую секунду он берет те же данные. Как вы думаете, будет лучше сделать проверку "новых" сообщений и если есть обновлять или разница несущественная и нет смысла?
Если забирать каждый раз всю хисторь чата то будет конечно по 10-30 мб трафика в час. В идеале сервак отдает только те сообщения, которые появились момента последнего пинга
Invision блин чувак, самое время принять решение кушать рыбу. =) такие вопросы, что просто пипец. Что ты хочешь тут понять? что тебе не понятно? что чтобы ЗНАТЬ ВРЕМЯ нужно ЗНАТЬ ВРЕМЯ? в чем затык? тебе сказали: слать все скопом каждый раз - маразм. Вывод: слать порциями. Опрашивать сервак раз в секунду. Это сложно? что тут непонятного? Где хранить время? где хочешь, там и храни. В сессии, в самом опрашивающем ява-скрипте. Где угодно. На сервере. На клиенте. В куках. В хидден инпуте. На стене мелом. В календаре маркером. Какой тут нахрен пример еще? =)
ты так легко это все говоришь, однако я просто не могу догнать править сам код или jquery запрос... Я не понимаю как доставать порциями, знаю что есть while В принципе то что задумывал написал, смайлы есть, к сессии подрубил, приватные сообщения есть, но вот с этой херью.. Ладно соре за мой тупизм, но никогда с этим не сталкивался)
честно не знаю как мне выводить очередь и юзать минимум запросов вот так я вообще представлял это так: проверить поступили ли новые сообщения, если да то обновить содержимое.. Но по всей видимости это слишком тупо =)
d бд пиши сообщение И ДАТУ в запросе с клиента говори дату последнего запроса.или последнего полученного сообщения. что? =)
а я ясно, вот только можно а на примере можно показать как будет выглядеть аха соре я не могу расписать правильно, хрень получается =) дату последнего сообщения получить проблем нет, но от клиента последний запрос... =)) --- p.s в бд хранится время формата time (h.i.s) К примеру вывожу в переменную из бд $lasttime и от клиента запрос $nowtime = date('H:i:s'); догнать не могу правда... ставить интервал проверки сообщений (т.е между ними сколько разница и если около пару сек то обновить содержимое)... видать я не в ударе сегодня
у человека есть время последнего запроса. У сообщения есть время. Возвращаем те сообщения, у которых дата >= его последнего посещения
а что если я хочу один раз для этого человека загрузить последние 20 сообщений, ведь при вашем условии если я войду в чат сообщений (последних) не будет... Принцип ведь не меняется также будет из while постоянно обновляться одно и тоже только запрос меньше затрат потратит блин я тупой. =))))))
Блин у меня проблема возникла, делаю по этой схеме но видимо сам js криво написан, т.к он тупо обновляет содержимое, а нужно чтобы добавлял только новое. получается что при обновлении новое выводится старое стирается. Работает по такой схеме: [js] function show() { $.ajax({ url: "chat.php", cache: false, success: function(html){ $("#chat").html(html); } }); } $(document).ready(function(){ show(); setInterval('show()',2000); });[/js] ведь можно в div chat просто добавлять новое а не полностью обновлять содержимое div chat ?