Создать список онлайн-пользователей? - PullRequest
0 голосов
/ 16 января 2012

Я не настолько хорош, чтобы написать приложение для чата, и я пытаюсь заставить его работать, и я недавно скачал его с здесь , это довольно хорошо, так как я Я проверил это на XAMPP, но у меня небольшая проблема. Я пытаюсь создать список онлайн-пользователей, чтобы придать ему более практичный вид приложения, но проблема в том, что я понятия не имею, как это легко сделать.

Когда пользователи входят на мой сайт, создается сеанс с именем g_username (в чате говорится «имя пользователя», но я исправлю это), и из того, что я вижу до сих пор, самым простым способом было бы сохранить их имя пользователя в базе данных под названием OnlineUsers и вызывать эти данные через Ajax, но другая проблема заключается в том, что он основан на сеансе, и иногда пользователи могут просто выйти без выхода из системы, и я намеревался запустить сценарий для выхода пользователя из таблицы OnlineUsers и путем удаления сеанса.

Если они уйдут без выхода из системы, они будут онлайн навсегда! Я мог бы суффиксировать на каждой странице немного кода, который переключал бы событие ajax при закрытии страницы, причем это был сценарий, который убивал их записи в таблице OnlineUsers, но, опять же, загружал бы сервер бесполезными запросами, когда пользователи переходили между страницами. Насколько я знаю.

Создание всего сайта в Ajax на самом деле не вариант, так как загружается несколько сайтов, объединенных в одно «место» с социальным «слоем» (если хотите) из социальной службы.

Кто-нибудь видит способ сделать это, который будет иметь смысл, и будет легко интегрировать, и делать с Apache, без доступа к командной строке?

Ответы [ 2 ]

0 голосов
/ 16 января 2012

Вы могли бы, например, сохранить временную метку последнего действия пользователей в базе данных, сравнить эту временную метку при выводе онлайн-пользователей и убедиться, что это было сделано не более 1 минуты назад.

Запуск на всех / важных страницах: (Решив, является ли последнее действие устаревшим, вы также можете проверить, было ли оно выполнено в течение одной минуты назад, чтобы уменьшить нагрузку на базу данных)

if($user['lastAction'] < time()) {
   //update into database, last action is outdated
}

При подсчете количества пользователей в сети и в цикле каждой отметки времени

//If the users last action was within a minute, the user is most likely online    
if(($row['lastAction']- time()) > 60*60)
       //count user as online
0 голосов
/ 16 января 2012

у вас может быть задание cron [если у вас есть cpanel], запускаемое на сервере один раз каждые 60 секунд или около того, которое проверяет, когда пользователь последний раз отправлял что-либо через чат, если у него не было последнего, скажем, 5 минут, а затем удаляет свою запись из списка онлайн-пользователей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...