Подсчет количества онлайн-пользователей с помощью jQuery Heartbeat (или PHP)

В настоящее время я использую этот php-код для подсчета количества пользователей, которые сейчас онлайн:

$session_id = session_id();
$time_stamp = time();
$time_limit = $time_stamp - 300;        //   We give the session only 5 minutes if it exists
$result = $this->select("SELECT * FROM `online_visitors` WHERE `session_id`='$session_id' LIMIT 1");
if (!mysql_num_rows($result)) {
    $tb_col[0] = "visitor_ip";
    $tb_col[1] = "country";
    $tb_col[2] = "session_id";
    $tb_col[3] = "time_stamp";
    $tb_col[4] = "last_time_stamp";
    $tb_data[0] = "'" . $this->visitor_ip . "'";
    $tb_data[1] = "'" . $this->visitor_country . "'";
    $tb_data[2] = "'" . $session_id . "'";
    $tb_data[3] = "'" . $time_stamp . "'";
    $tb_data[4] = "'" . $time_stamp . "'";
    $this->insert("`online_visitors`", $tb_col, $tb_data);
} else {
    $this->update("`online_visitors`", "`visitor_ip`='$this->visitor_ip', `country`='$this->visitor_country', `last_time_stamp`='$time_stamp'", "`session_id`='$session_id'");
}

$this->delete("`online_visitors`", "`last_time_stamp`<'$time_limit'");

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

Правильно ли я подхожу к этому? Любые советы о том, как добиться этого в jQuery (я не очень хорош с этим)? Или мой подход может быть улучшен?

Я также хочу улучшить свой PHP-код

1 ответ

Решение

Вы также можете сделать это наоборот: вместо обновления времени через ajax, вы предполагаете, что пользователь находится в сети, пока он не покинет страницу или не закроет браузер. В этом случае вы используете ajax для установки пользователя в автономный режим и запускаете его при запуске браузера перед загрузкой. В редких случаях (отключение питания, сбой системы) это событие не будет запускаться, поэтому рекомендуется также проверить, когда было выполнено последнее обновление, если у вас есть плавающий пользователь.

Другие вопросы по тегам