Как в теории реализовать онлайн движок. Т.е как определить пользователь в онлайне или в офлайне? Допустим, есть база данных пользователей, делаем ячеку online в таблице members. Если пользователь залогинился то обновляем ячейку online c нуля на единицу. А если пользователь делает logout то обнавляем ячейку online на 0. А если пользователь просто закрывает окно браузера, то что тогда делать? Или как можно всё это проще реализовать?
есть у body событие onUnload, возникает, когда закрываешь страницу. А вообще можно реализовать так: при посещении страницы в бд юзеров в поле "время" заносится текущее время. А для подсчета он-лайн вытаскивае время пользователей и сравниваем с текущим временем. Если разница более пяти минут, то: - человек находится на странице более пяти минут; - человек ушел. Второе более вероятней, чем первое, но даже если и находится он более пяти минут, то, перейдя на другую страницу, он вновь окажется в онлайне
это лоховское начинание у меня чудненько работает на мускуле, дергая табличку на каждой странице. По-моему, до 10ти минут видит юзера на странице, потом он значится уже как оффлайн.
Апельсин Первым я ответил на вопрос А если пользователь просто закрывает окно браузера, то что тогда делать?
Ensiferum на вопрос А если пользователь просто закрывает окно браузера, то что тогда делать? неплохо бы ответить "ничего", да и хватило бы, так как вторая часть твоего ответа отработала бы за двоих Смысл еще события обрабатывать
На некоторых ресурсах открытая страница держит пользователя в режиме on-line сколь угодно долго. Там реализованы Ajax-запросы, которые грузят новые сообщения пользователя, обновляют статус его записей и пр. Срабатывают с определенным интервалом по времени. По всей видимости, сервер, обрабатывая такие запросы, обновляет и некоторое "поле lastAction". Поэтому пока страница открыта - пользователь считается он-лайн. Лично мне такой способ не кажется самым правильным (описанный случай - это, по-моему, статус "пользователь уснул"), но как дополнение ко всем случаям, описанным выше, вполне подходит