Есть таблица users в ней колонка online, после авторизации в колонки online прописывается значение 1, после выхода разрушается сессия и в колонке online выставляется 0. Но если браузер просо закрывается то колонка Online остается 1(что не есть хорошо). Как сделать, чтобы при закрытие браузера разрушалась сессия и при этом был запрос в базу данных на обновление данных? Единстенное до чего додумался - сделать через крон, чтобы каждые допустим 5 минут у все значения колонки Online выставлялись 0, и на каждой странице зделать обновление значение online=1 этого пользователя. т.е если пользователь находится на сайте то при открытие каждой странице ему выставляется online=1, если 5 минут бездействия то 0. Привильно ли это будет? и сильноли это будет нагружать сервер и базу?
Зачем cron? Можно вручную в задать время обновления и при заходе посетителя, при его добавлении, обновлять статистику. Где-то на форуме была тема обработки онлайн статистики.
Inoi Сделайте так: при каждом действии пользователя заносите в базу данных время этого действия. Разлогирование - 0. Для того, чтобы выбрать юзеров он-лайн, выберите всех пользователей у которых в этом столбике разница с текущим временем не превышает 5 минут.
а можно вообще базу не тягать, если показывать просто посетителей, в том числе и без регистрации оналай
В принципе это стандартный способ. Только не нужно при каждом действии заносить данные в базу, зачем так жестоко по отношению к базе :lol: Данные в базу можно заносить раз в минуту например. Нужно хранить в куках последнее время занесения данных в базу, и каждый раз делать проверку, если срок не превысил минуту. Данные вбиваем REPLACE INTO (user_id,date,online) VALUES(77777,sysdate(),1);