Перейти к содержимому

Сервис обмена электронных валют

Партнерская программа Kredov

  • Закрытая тема Тема закрыта

Как определить онлайн ли пользователь?

#1 gaaarfild

gaaarfild
  • Пользователь
  • 596 сообщений
  • Репутация: 0
0

Отправлено 21 Апрель 2010 - 22:52

Как определять, онлайн ли пользователь?

 

 

  • 0

#2 Matt

Matt
  • Пользователь
  • 774 сообщений
  • Репутация: 2

Отправлено 22 Апрель 2010 - 00:54

Какой, где?
  • 0

#3 gaaarfild

gaaarfild
    Topic Starter
  • Пользователь
  • 596 сообщений
  • Репутация: 0

Отправлено 22 Апрель 2010 - 15:00

Ну мы о чем сейчас говорим?
О PHP. Как, средствами PHP определять онлайн ли сейчас пользователь. Где - неважно.
  • 0

#4 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 22 Апрель 2010 - 20:45

gaaarfild,
Да проще простого, система должна быть построена так, чтобы можно было при обращении к любой странице изменять данные в БД, о текущем состоянии пользователя...
Тогда всё просто, при каждом обращении к скрипту пользователем, у нас в текущей сессии или ещё где хранится id_user. И есть у нас таблица, последнего активного сеанса пользователей.
Данные в эту таблицу заносятся или обновляются при каждом обращении авторизованного пользователя к страницам ресурса. Обязательно должно быть поля даты-времени последнего обращения.

Теперь нужно определиться, как удалять устаревшие записи:
1) При каждом обращении любого пользователя к страницам ресурса. Но это накладно, очень накладно. Хотя сначала стоило бы проверить наличие таких устаревших записей. Тогда нагрузка будет меньше.
2) Запустить скрипт в планировщике задач к примеру каждые 3 минуты или каждые 5 минут.
3) Иметь запись где-либо, о дате последнего обновления списка действий. И при каждом обращении пользователя проверять устарела ли эта дата или нет. Если устарела, список надо почистить.

Решать какой вариант выбрать, или придумать какой-либо ещё, дело разработчика.
И так, для определения, кто у нас онлайн нам надо:
1) Иметь данные о последних действиях пользователей. Это может быть файл или таблица БД. (С файлами выйдут накладки)
2) Информационная часть, которая будет запрашивать данные из таблицы с последними действиями и по ID юзера в ней и выводить ник
3) Обработчик, удаляющий старые записи о действиях, которые были произведены более чем N времени ранее
  • 0

#5 gaaarfild

gaaarfild
    Topic Starter
  • Пользователь
  • 596 сообщений
  • Репутация: 0

Отправлено 22 Апрель 2010 - 22:24

А планировщик - это CRON? И как с ним работать? Он ведь не везде так просто работает.
  • 0

#6 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 22 Апрель 2010 - 22:48

gaaarfild, CRON это только под *nix, под Windows существуют аналоги.
Вообще ставить подобные задания на планировщик не советую, он работает независимо от вашего скрипта. Это висячий демон, который запускает в нужные моменты скрипты на сервере. Теперь представим, что он повис... Думаю, ясно что будет.
Как настраивать и управлять CRON'ом под Linux:
Настройка crontab ( источник 1 | источник 2 )
  • 0

#7 gaaarfild

gaaarfild
    Topic Starter
  • Пользователь
  • 596 сообщений
  • Репутация: 0

Отправлено 23 Апрель 2010 - 09:44

Тогда, мне кажется, наиболее подходящий вариант - 3.
Спасибо. Если ни у кого больше нет дополнительных вопросов, то тему можно закрыть, я думаю.
  • 0

#8 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 23 Апрель 2010 - 11:12

gaaarfild, как по мне, то тоже, но хранить файл не очень приятно, бывают конфликты в доступе. Может есть вариант получше, но у меня что-то в голову ничего не лезет.
  • 0

#9 gaaarfild

gaaarfild
    Topic Starter
  • Пользователь
  • 596 сообщений
  • Репутация: 0

Отправлено 23 Апрель 2010 - 15:41

Зачем файл. В поле БД у каждого пользователя поле last_access и поле online(int).
И проверять все это.
  • 0

#10 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 23 Апрель 2010 - 16:04

gaaarfild, Имелось ввиду, что имеется запись последней чистки данных, чтобы каждый раз не проверять и не чистить при каждом обращении - это большая нагрузка. Вот эту запись я предлагал хранить в файле.
  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru