Проверка присутствия пользователя в чате

ZiBoX

Новичок
Проверка присутствия пользователя в чате

Народ...
Раскажу все как есть. :)
Дописываю чат(без MySQL), уже почти все написал, но тут возникает проблема чем дальне пишешь тем больше проблем.
Моя проблема в следующем... Человек заходит в чат, в сессию прописывается его логин, пасс и то что но вошел(logined=true)
И вот пользователь хочет выйти, но он не нажимает кнопочку Выход а ракрывает окно... и тут возникает проблема.... Он остается в списках присутствия на чате.
Я пытался устронить этот недочет:
При входе пользователь добавлялся в файл таким видом:
login::ip::дата и время входа
Затем при посылке сообщения файл заходя правиться и перезаписывается время посылки собщения вместо время входа, ну я думаю это понятно(это очень !галимо!).

Далее через каждые 5 секунд фрейм с сообщениями обнавляется и проверяет последнюю дату пользователя(та которая в файле), и если time()-$timeinfile>210 тогда пользователь удаляется из файла.

Вот! но это очень бажно и неправильно(пользователь может долго сидеть в чате и ничего не говорить).

Короче у меня есть идея взятая у PErl чата GTChat... Тап посылаются пакеты пользователю(типа ping) и поэтому пользователь может сидеть до опупения. Но я не доганяю как это сделать.

А вот и вопрос:
Как сделать нормальную проверку присутствия пользователя в чате и отлов его уходя... ну хотябы отлов закрытия окна браузера(IE,OPERA, etc)...
 

SiMM

Новичок
Если фрейм обновляется каждые 5 секунд - то в чём проблема? Записывай дату последнего обновления, пользователи, у которых эта дата больше определённого времени - вылетевшие. Это и будет своеобразным PONG'ом, гарантирующим то, что пользователь ещё не ушёл.
 
Сверху