Построение списка активных пользователей чата с использованием БД

friend123

Guest
Построение списка активных пользователей чата с использованием БД

Здраствуйте! Я бы хотел посоветоваться с вами. Значит, делаю чат. На данный момент ломаю голову над тем как вывести список пользователей находящихся в онлайне. Я пытаюсь делать через БД, где специально заведено поле active. Т.е. когда пользователь авторизуется, то обновляется его запись в БД и active присваивается 1. Но вся фишка в том, как определить находится он сейчас в Нете или нет, например он просто закрыл страницу без нажатия кнопки "Выход"(оно так всегда бывает). Получается что active я обнулить не смогу? Может как-то с помощью сессий?
 

zap

Guest
дохлый номер, на ентом способе уже много собак съедено
 

friend123

Guest
Не ну как-то это решается!? Подскажи другой
 

Nimous

Guest
У тебя ведь чат обновляется раз в 10-15 секунд, так?

Разве нельзя узнать, при следующем регулярном обновлении,
пользователь всё ещё здесь, или нет.

Cookies, например.
 

friend123

Guest
Через cookies? Ну какие команды? Хотя желательно без них, т.к. не у всех же они включены
 

Nimous

Guest
Просто нужно проверять существование одного и того же идентификатора (Cookie) через определённый промежуток времени.
 

friend123

Guest
Понятно. Через сессии тоже надеюсь можно.
 

Фанат

oncle terrible
Команда форума
friend123
ты как-то узнаёшь, от кого пришло сообщение? Ну и какая проблема ири запросе узнать точно так же?
 

friend123

Guest
Честно говоря пробовал и через cookies. Не могу понять принцип построения списка. Как занести в базу online=0 когда пользователь закрыл к примеру браузер. Если он закроет браузер, то выполнение скрипта для него прекратится, но как для остальных?
 

Фанат

oncle terrible
Команда форума
Как занести в базу online=0 когда пользователь закрыл к примеру браузер.
никак.
заносить надо не когда закрыл, а когда обратился
не 0, а время обращения.
 

friend123

Guest
Фанат, объясни пожалуйста на пальцах, че-то не пойму
 

Мутник

Новичок
friend123

тебе ж уже пояснили.
при каждом обращении записываешь в БД время, когда обратились. Потом решаешь для себя, через сколько неактивного времени юзера считать в ОФФЛАЙНе. Т.е. от обратного... и все..

$sql = "SELECT * FROM `table` WHERE `online` > ".(mktime() - 60*10).";

примерно так... как один из вариантов. (типа только тех, кто был в чате за последние 10 минут)
 

Фанат

oncle terrible
Команда форума
friend123
каким образом у тебя клиент получает новые сообщения из чата?
 

friend123

Guest
Автор оригинала: Фанат
friend123
каким образом у тебя клиент получает новые сообщения из чата?
Все сообщения заносятся в БД в отдельную таблицу. В таблице есть поля: id, имя того кто занес, текст сообщения, дата, время. Я проверяю как: заходит клиент, засекаю его текущее время и делаю выборку из БД не всех записей, а те которые постились последние 10 минут и плюс все новые

Автор оригинала: Мутник
friend123
тебе ж уже пояснили.
при каждом обращении записываешь в БД время, когда обратились. Потом решаешь для себя, через сколько неактивного времени юзера считать в ОФФЛАЙНе. Т.е. от обратного... и все..

$sql = "SELECT * FROM `table` WHERE `online` > ".(mktime() - 60*10).";

примерно так... как один из вариантов. (типа только тех, кто был в чате за последние 10 минут)
А база не накроется от такого количества запросов???


Заодно хочу спросить: как сделать частичное обновление страницы, т.е. поле сообщений и пользователей, но не трогая поле ввода средствами PHP без фреймов. Возможно?

-~{}~ 25.04.05 19:55:

Как быть?
 

Фанат

oncle terrible
Команда форума
записывать в базу время обращения за обновлением и ник.
 

friend123

Guest
А как сделать частичное обновление страницы, т.е. поле(имеется ввиду не БД) сообщений и пользователей, но не трогая поле ввода сообщения средствами PHP без фреймов. Возможно?

-~{}~ 26.04.05 13:53:

Как?
 

fax

Guest
Автор оригинала: friend123
А как сделать частичное обновление страницы, т.е. поле(имеется ввиду не БД) сообщений и пользователей, но не трогая поле ввода сообщения средствами PHP без фреймов. Возможно?

-~{}~ 26.04.05 13:53:

Как?
Не понял что ты хочешь сделать , а обновлять страницу ты можешь при помощи
<meta http-equiv="refresh" content="время в секундах">
 

friend123

Guest
Автор оригинала: fax
Не понял что ты хочешь сделать , а обновлять страницу ты можешь при помощи
<meta http-equiv="refresh" content="время в секундах">
Да знаю я. Я так и делаю, но когда я что-то ввожу в поле ввода сообщений и в этот момент обновляется страница, то то что я ввел удаляется
 

Лексеич

Московский калмык
friend123
тогда используй фрэймы. в одном вставляй мету а в другом держи форму ввода сообщений.
 
Сверху