Определить online или offline
Определить online или offline
Вопрос в том, как лучше определить в каком состоянии находится авторизированый пользователь на сайте.
Если пользователь залогинился, то прописывается дата и время, когда он зашел в систему. Однако нужно как-то отслеживать онлайн пользователь или нет. В течении пяти минут делал ли что-нибудь в системе он или нет.
Если пользователь залогинился, то прописывается дата и время, когда он зашел в систему. Однако нужно как-то отслеживать онлайн пользователь или нет. В течении пяти минут делал ли что-нибудь в системе он или нет.
-
- Сообщения: 910
- Зарегистрирован: 2019.08.13, 01:49
Re: Определить online или offline
Логируйте запросы пользователя в базу в on beforeAction приложения, по ним смотрите.
Re: Определить online или offline
"on beforeAction" внутри самого приложения должно быть на высшем уровне, я правильно понял? На уровне модулей и компонентов.yiiliveext писал(а): ↑2020.02.13, 12:22 Логируйте запросы пользователя в базу в on beforeAction приложения, по ним смотрите.
Если я правильно прочитал, то вначале срабатывает beforeAction приложения, потом модулей, если там оно есть и затем уже конкретного контроллера.
-
- Сообщения: 910
- Зарегистрирован: 2019.08.13, 01:49
Re: Определить online или offline
Да.unknownby писал(а): ↑2020.02.13, 13:05"on beforeAction" внутри самого приложения должно быть на высшем уровне, я правильно понял? На уровне модулей и компонентов.yiiliveext писал(а): ↑2020.02.13, 12:22 Логируйте запросы пользователя в базу в on beforeAction приложения, по ним смотрите.
Если я правильно прочитал, то вначале срабатывает beforeAction приложения, потом модулей, если там оно есть и затем уже конкретного контроллера.
Re: Определить online или offline
Решено таким способом. Или есть более деликатный метод о котором я еще не знаю
Код: Выделить всё
'on beforeAction' => function ($event) {
User::updateAll([
'users_lasttime' => date('Y-m-d H:i:s'),
],['users_id' => \Yii::$app->user->identity->getAuth('id')]);
},
-
- Сообщения: 910
- Зарегистрирован: 2019.08.13, 01:49
Re: Определить online или offline
В таймстамп не проще время учитывать? Что за метод getAuth(), getId() не подходит?unknownby писал(а): ↑2020.02.13, 15:14Решено таким способом. Или есть более деликатный метод о котором я еще не знаюКод: Выделить всё
'on beforeAction' => function ($event) { User::updateAll([ 'users_lasttime' => date('Y-m-d H:i:s'), ],['users_id' => \Yii::$app->user->identity->getAuth('id')]); },
Re: Определить online или offline
По первому вопросу не понял, прописывать в поле не определенную дату и время, а unix время? Если так, то реализация БД была сделана ранее, поэтому поддержка на уровне доработок, а не переделокyiiliveext писал(а): ↑2020.02.13, 15:53 В таймстамп не проще время учитывать? Что за метод getAuth(), getId() не подходит?
Метод getAuth используется по всему проекту, поэтому чтоб было написание идентичное используется этот метод. А так оно вернет одно и то же значение, что и getId().
-
- Сообщения: 910
- Зарегистрирован: 2019.08.13, 01:49
Re: Определить online или offline
Тогда все нормально.unknownby писал(а): ↑2020.02.13, 17:10По первому вопросу не понял, прописывать в поле не определенную дату и время, а unix время? Если так, то реализация БД была сделана ранее, поэтому поддержка на уровне доработок, а не переделокyiiliveext писал(а): ↑2020.02.13, 15:53 В таймстамп не проще время учитывать? Что за метод getAuth(), getId() не подходит?
Метод getAuth используется по всему проекту, поэтому чтоб было написание идентичное используется этот метод. А так оно вернет одно и то же значение, что и getId().
Re: Определить online или offline
Спасибо за помощь
Тема хорошая, а то искал на быструю руку и ничего толкового сразу не нашло.
Добавил еще условие когда пользователь не залогинен, т.к. ошибку выдавало.
Код: Выделить всё
if(!empty(\Yii::$app->user->identity))