Задать вопрос

Как правильно посчитать время пользователя online?

Подскажите как на Ваш взгляд правильно подсчитать общее время которое пользователь находился онлайн?
За онлайн можно взять некое действие которое пользователь совершает каждые 30 секунд.

Не важно на каком языке программирования - интересна логика.
  • Вопрос задан
  • 3280 просмотров
Подписаться 6 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
WooDFox
@WooDFox
Думаю, правильнее будет на стороне сервера хранить начало авторизации и при каждом действии пользователя фиксировать "конец". При выходе считать сессию завершенной. При отсутствии действий свыше n секунд - считать "концом" последнюю активность.
Считать любые автоматические запросы активностью пользователя ИМХО неправильно.

Однако, все очень зависит от конкретного случая - и таймауты и способ хранения (таки, текущий онлайн и/или общий). И даже учет автоматических запросов.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
ximik777
@ximik777 Автор вопроса
На ум приходит что то типа такого решения.
$mc = new Memcache;
    $mc->connect('127.0.0.1', 11211);

    $period = 30;   // longpoll reconnect
    $delay = 1;     // reconnect delay
    $uid = 1;

    if(!$last_active = $mc->get("last_active_{$uid}")){
        $mc->set("last_active_{$uid}", time());
        die();
    }

    $now = time();
    $online_time = $now - $last_active;
    $counter = $mc->get("online_counter_{$uid}") ?: 0;

    if($online_time < $period+$delay){
        $counter += $online_time;
    } else {
        $counter += $period;
    }
    $mc->set("online_counter_{$uid}", $counter);
    $mc->set("last_active_{$uid}", time());

    echo "User ({$uid}) online time: {$counter}";
Ответ написан
@Snuff
Каждую минуту с клиента шлешь через AJAX/websockets запрос на сервер, так и отслеживаешь.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
IT ATLAS Москва
от 250 000 до 500 000 ₽