@arsenaljek

Последняя активность пользователя на сайте?

Как записывать последнию активность пользователя на сайте? Мне достаточно знать, что пользователь переодически посещает сайт.
Авторизация такая
if (!empty($_COOKIE['token_auth'])) { // token_auth есть в куках, если при входе нажимали "Запомнить меня"
  	$token_auth = mysqli_real_escape_string($linkMain,$_COOKIE['token_auth']);
  	$sql = "SELECT * FROM `users` WHERE `token_auth`='$token_auth'";
  	$res = mysqli_query($linkMain,$sql);
  	if (mysqli_num_rows($res) > 0) {
    	setcookie("token_auth", $token_auth, time()+60*60*24*30, '/', "", false, true);
    	$user_bd = mysqli_fetch_array($res);
    	$_SESSION['user_login'] = $user_bd['email'];
    	$_SESSION['user_id'] = $user_bd['id'];
    	$_SESSION['active_user'] = $user_bd['active'];
    	$_SESSION['permission'] = $user_bd['permission'];
    	$pAdm = $_SESSION['permission'];
  	}
}

$user_login = '';
if (!empty($_SESSION['user_login'])) {
  	$user_login = $_SESSION['user_login'];
  	$user_id = $_SESSION['user_id'];
  	$user_status = $_SESSION['active_user'];
  	$pAdm = $_SESSION['permission'];
}

Я думал использовать UPDATE. Но в таком случае запись времени в бд будет происходить только при авторизации пользователя. Мне кажется это не совсем верным. Хотелось бы конечно писать актуальное время активности, пока пользователь прибывает на сайте
  • Вопрос задан
  • 263 просмотра
Решения вопроса 1
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
У вас для авторизованного пользователя всегда есть $user_id, а значит при любой активности (клике) можно обновлять значение "время активности" в БД для данного $user_id;
Чуть более оптимизированный вариант, обновлять время активности не чаще чем раз в какое-то время (раз в минуту например). Для этого используете сессии как промежуточное хранилище, запоминая когда в последний раз обновляли данные в БД. Если обновление было больше минуты назад, обновляем значение в БД снова.
При таком подходе, если пользователь, сделал за минуту 10 кликов на сайте, то в БД вы сделаете UPDATE 1-2 раза, вместо 10 раз.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы