Вход на сайт производится за счет PHP сессий.
Впринципе, можно было бы занасить значение онлайн в бд при входе и менять его при выходе, но при закрытий браузера значение останется он-лайн(
Как такое можно реализовать, что бы с точностью поти как в вконтакте?
Кстати, всех мужчин с праздником, думаю их здесь боле чем три четвертых от всей массы)
1. ShuvaL - 23 Февраля, 2011 - 13:01:43 - перейти к сообщению
2. grefon - 23 Февраля, 2011 - 13:07:38 - перейти к сообщению
Принцип в следующем: Вы устанавливаете срок актуальности сессии, например 3 минуты (180 сек). Когда пользователь заходит на сайт то в БД пишите что он онлайн и ставите время визита. Когда пользователь переходит на следующую страницу Вы обновляете значение в базе данных последнего визита на текущее время. А при Выводе "кто онлайн" просто делаете проверку с учетом актуальности в Вами установленные 180 сек, если пользователь не куда не ходил по сайту более 3 мин, значит он ушел с сайта, если ходил - значит онлайн.
3. Мелкий - 23 Февраля, 2011 - 13:08:28 - перейти к сообщению
Сохраняете не "онлайн", а время последнего обращения, удобнее unix time. Разницу между последним обращением и текущим временем выбираете сами, всё что больше - считать оффлайн.
4. ShuvaL - 23 Февраля, 2011 - 13:10:29 - перейти к сообщению
Огромное спасибо!)
Блин я нубас(
Все так просто оказалось)
(Добавление)
А сколько оптимальное время неактивности посоветуйте?
Блин я нубас(
Все так просто оказалось)
(Добавление)
А сколько оптимальное время неактивности посоветуйте?
5. grefon - 23 Февраля, 2011 - 13:16:25 - перейти к сообщению
А это в зависимости от посещаемости ресурса и ресурсов хостинга. Обычно человеку хватает 30 сек, чтобы посмотреть страницу (если там не очень много текста). Я бы поставил 3 минуты, и актуально и небольшая нагрузка.
6. ShuvaL - 23 Февраля, 2011 - 15:34:00 - перейти к сообщению
Создал поле типа DATETIME для каждого пользователя, а как теперь проверить что 3 минуты уже прошло? Функция какая ?
(Добавление)
Создал поле типа DATETIME для каждого пользователя, а как теперь проверить что 3 минуты уже прошло? Функция какая ? Или резать на массив и прибавлять три к минутам?
(Добавление)
Создал поле типа DATETIME для каждого пользователя, а как теперь проверить что 3 минуты уже прошло? Функция какая ? Или резать на массив и прибавлять три к минутам?
7. Мелкий - 23 Февраля, 2011 - 16:08:57 - перейти к сообщению
ShuvaL, поэтому я и посоветовал использовать unix time. Тогда запрос элементарен и для разработчика и для БД:
(time())-180 - unix time на 3 минуты (180 секунд) раньше этого момента времени.
А для datetime - покурите http://dev[dot]mysql[dot]com/doc/refman/[dot][dot][dot]e-functions[dot]html