пользователи онлайн

djkoff

Новичок
Подскажите каким методом и как сделать на сайте возможность отслеживать пользователей онлайн/оффлайн.

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

Подскажите, пожалуйста!
 

zerkms

TDD infected
Команда форума
периодически отправлять аяксом пинги. тех, кто давно не пинговался, считать ушедшими из онлайна
 

Духовность™

Продвинутый новичок
смотря для какой цели
онлайн - это что? открытый браузер или активность пользователя?
если первое, то пинг можно
если второе, то хватит выборки пользователей по времени, например, выбрать всех, дата посещения которых не более 3 минут назад.
 

scorpion-ds

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

zerkms

TDD infected
Команда форума
scorpion-ds
Ну тредстартер захотел именно так, перечитай вопрос.
 

scorpion-ds

Новичок
zerkms, я уточнил по той причине, что от меня такое когда-то просили именно для красоты, без какого либо полезного смысла.
 

djkoff

Новичок
ну да, хотел бы именно с помощью пингов! : )

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

заранее благодарен.
 

djkoff

Новичок
спасибо!

хочется уточнить, что при авторизации данные пользователь записываются в сессии, которые длятся 1000 секунд.
надеюсь, метод "пингования" будет дружить с сессиями : )
 

zerkms

TDD infected
Команда форума
аяксовый запрос - это точно такой же http-запрос как и любой другой, выполняемый браузером
 

djkoff

Новичок
только без видимой перезагрузки страницы : ) и это меня вполне устраивает!

вот и пришло мне время изучить ajax и jquery)

почитал документации и про ajax с jquery и не совсем разобрался, что как нужно составить запрос в .ajax() чтоб страничка пинговалась : (
помогите, пожалуйста!
 

Beavis

Banned
просто посылаешь пустой запрос, а в скрипте получаешь id юзера, и обновляешь данные
 

scorpion-ds

Новичок
почитал документации и про ajax с jquery и не совсем разобрался, что как нужно составить запрос в .ajax() чтоб страничка пинговалась : (
помогите, пожалуйста!
Тебе это еще и в "цикле" надо делать, иначе будет оправлен только 1 запрос.

По простому я бы в методе обработки успешного запроса, добавил "рекурсивный" вызов этой же функции, но с задержкой.
 

djkoff

Новичок
scorpion-ds, а можешь примерно описать это в виде кода?

и да, мне для общего развития, как сделать, чтоб считать "онлайн", только тех пользователей, кто заходил на сайт за определенное время?
 

Beavis

Banned
Что за мода пошла, просить помочь, а в итоге клянчить готовый код

> и да, мне для общего развития, как сделать, чтоб считать "онлайн", только тех пользователей, кто заходил на сайт за определенное время?
ты хоть пробовал думать?
в базе у каждого пользователя есть поле, в котором записано время последнего пинга
дальше сам догадаешься?
 

djkoff

Новичок
Beavis
Не хами мне, пожалуйста!

Я не клянчу, а не могу разобраться в ajax- и js-языках, я с ними работал только на уровне фрейворка jquery и простых запросов! Мне пример нужен, чтоб разобраться. В известных поисковиках не нашел ничего, что соответствовало бы моей проблеме, поэтому и спросил здесь, не думал, что наткнусь на пафос у некоторых личностях.

> в базе у каждого пользователя есть поле, в котором записано время последнего пинга
дальше сам догадаешься?

Прекрасно, но я не могу сделать отправку пинга.
 

Vin-Diesel

Новичок
Beavis
Не хами мне, пожалуйста!

Я не клянчу, а не могу разобраться в ajax- и js-языках, я с ними работал только на уровне фрейворка jquery и простых запросов! Мне пример нужен, чтоб разобраться. В известных поисковиках не нашел ничего, что соответствовало бы моей проблеме, поэтому и спросил здесь, не думал, что наткнусь на пафос у некоторых личностях.

> в базе у каждого пользователя есть поле, в котором записано время последнего пинга
дальше сам догадаешься?

Прекрасно, но я не могу сделать отправку пинга.
да там тоже самое все, только синтаксис java.
пишешь функцию, которая шлет запрос аяксом на сервер
и ставишь таймер, чтобы вызывал эту функцию.

примеры можно найти в гугле по ключевым словам:)
 

scorpion-ds

Новичок
djkoff
Так не выйдет, давай лучше разбираться, что у тебя не получается, в сообщении выше тебе дали все что тебе необходимо для написания кода, если ты плохо понимаешь по английски, то есть масса ресурсов с хорошим переводом, у меня к примеру в закладках есть вот такой сайт:
http://slyweb.ru/jquerydoc/jQuery-ajax-options.php
 

djkoff

Новичок
scorpion-ds, стараюсь разобраться. хочется научится это делать, чтоб потом не было проблем и я был в курсе темы.

пишу такой код.
PHP:
setInterval('pingUser()',600000); // каждые 10 минут срабатывает функция
function pingUser() {
	$.ajax({
                  url: 'session.php';
        });
}
а вот как сделать возвратную функцию и что возвращать обратно - не знаю.

в session.php я делаю проверку на существование сессии и если сессия есть, то делаю пометку с датой в БД.
но как постоянно поддерживать сессию я до сих пор так и не понял : (

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