Как проверить, в on-line ли еще юзер?

Tarakan

Новичок
Как проверить, в on-line ли еще юзер?

Делаю чат, проверяю следующим образом: при каждой перезагрузке фрейма (через определенное юзером "время обновления") записываю в таблицу id даного юзера, его время обновления и текущее время. Здесь же проверка для всех записей: если разница записаного и текущего времени больше времени обновления, то запись удаляется. С одним пользователем работает безукоризненно, но если несколько, через некоторое время работы юзеры удаляються, даже если они еще в чате.
Как делаются подобные вещи? Помогите, плз, с алгоритмом.
Заранее благодарен.
 

RomikChef

Guest
подобные вещи именно так и делаются.
правда я не понял, что значит фраза "его время обновления и текущее время". Это же одно и то же? Текущее время в тот момено, когда он обновил страницу.

если у тебя удаляются юзеры, то проблема не в алгоритме, а в скрипте - ты как-то не так сделал удаление, вот и все.
 

Tarakan

Новичок
Юзер задает время обновления фрейма, например 5 с. Текущее время - результат, который возвращает ф-ция time();
Если time()-время_последнего_обновления>5 , то удаляем.
(Время_последнего_обновления - тоже time(), записан в таблицу при обновлении). Когда один человек, то time()=время_последнего_обновления.
(Я не очень мутно объясняю?)
 

RomikChef

Guest
господи, так ты таймаут им дай, несчастным!
По-твоему, запрос мгновенно приходит?
иногда и по минуте молчит.
 

Апокалипсис

Guest
Короче была такая фигня у меня, при входе в чат запиши туда id юзера и time();, тогда будет всё окей.... а может у тебя файл открыт на "w"? и при обновлении содержимое стираеться?

Я у себя ставил таймаут 300сек=5 минут
 

netdog

net @
Если у тебя именно так настроено, то это не значит что у user'a обновиться скрипт именно через 5 секунд... Есть такая вещ как пинг да и загрузка его канала/инета... в общем не обязательно что скрипт получит данные от него именно через 5 сек...
 

*.MOFF.*

Guest
а как таймаут поставить? +) на JS что ли ?
 
Сверху