Определить online или offline

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Закрыто
unknownby
Сообщения: 258
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Определить online или offline

Сообщение unknownby » 2020.02.13, 12:03

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

yiiliveext
Сообщения: 867
Зарегистрирован: 2019.08.13, 01:49

Re: Определить online или offline

Сообщение yiiliveext » 2020.02.13, 12:22

Логируйте запросы пользователя в базу в on beforeAction приложения, по ним смотрите.

unknownby
Сообщения: 258
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Re: Определить online или offline

Сообщение unknownby » 2020.02.13, 13:05

yiiliveext писал(а):
2020.02.13, 12:22
Логируйте запросы пользователя в базу в on beforeAction приложения, по ним смотрите.
"on beforeAction" внутри самого приложения должно быть на высшем уровне, я правильно понял? На уровне модулей и компонентов.
Если я правильно прочитал, то вначале срабатывает beforeAction приложения, потом модулей, если там оно есть и затем уже конкретного контроллера.

yiiliveext
Сообщения: 867
Зарегистрирован: 2019.08.13, 01:49

Re: Определить online или offline

Сообщение yiiliveext » 2020.02.13, 13:10

unknownby писал(а):
2020.02.13, 13:05
yiiliveext писал(а):
2020.02.13, 12:22
Логируйте запросы пользователя в базу в on beforeAction приложения, по ним смотрите.
"on beforeAction" внутри самого приложения должно быть на высшем уровне, я правильно понял? На уровне модулей и компонентов.
Если я правильно прочитал, то вначале срабатывает beforeAction приложения, потом модулей, если там оно есть и затем уже конкретного контроллера.
Да.

unknownby
Сообщения: 258
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Re: Определить online или offline

Сообщение unknownby » 2020.02.13, 15:14

yiiliveext писал(а):
2020.02.13, 13:10
Да.
Решено таким способом. Или есть более деликатный метод о котором я еще не знаю :D

Код: Выделить всё

'on beforeAction' => function ($event) {
        User::updateAll([
            'users_lasttime' => date('Y-m-d H:i:s'),
        ],['users_id' => \Yii::$app->user->identity->getAuth('id')]);
    },

yiiliveext
Сообщения: 867
Зарегистрирован: 2019.08.13, 01:49

Re: Определить online или offline

Сообщение yiiliveext » 2020.02.13, 15:53

unknownby писал(а):
2020.02.13, 15:14
yiiliveext писал(а):
2020.02.13, 13:10
Да.
Решено таким способом. Или есть более деликатный метод о котором я еще не знаю :D

Код: Выделить всё

'on beforeAction' => function ($event) {
        User::updateAll([
            'users_lasttime' => date('Y-m-d H:i:s'),
        ],['users_id' => \Yii::$app->user->identity->getAuth('id')]);
    },
В таймстамп не проще время учитывать? Что за метод getAuth(), getId() не подходит?

unknownby
Сообщения: 258
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Re: Определить online или offline

Сообщение unknownby » 2020.02.13, 17:10

yiiliveext писал(а):
2020.02.13, 15:53
В таймстамп не проще время учитывать? Что за метод getAuth(), getId() не подходит?
По первому вопросу не понял, прописывать в поле не определенную дату и время, а unix время? Если так, то реализация БД была сделана ранее, поэтому поддержка на уровне доработок, а не переделок :D
Метод getAuth используется по всему проекту, поэтому чтоб было написание идентичное используется этот метод. А так оно вернет одно и то же значение, что и getId(). :)

yiiliveext
Сообщения: 867
Зарегистрирован: 2019.08.13, 01:49

Re: Определить online или offline

Сообщение yiiliveext » 2020.02.14, 10:40

unknownby писал(а):
2020.02.13, 17:10
yiiliveext писал(а):
2020.02.13, 15:53
В таймстамп не проще время учитывать? Что за метод getAuth(), getId() не подходит?
По первому вопросу не понял, прописывать в поле не определенную дату и время, а unix время? Если так, то реализация БД была сделана ранее, поэтому поддержка на уровне доработок, а не переделок :D
Метод getAuth используется по всему проекту, поэтому чтоб было написание идентичное используется этот метод. А так оно вернет одно и то же значение, что и getId(). :)
Тогда все нормально.

unknownby
Сообщения: 258
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Re: Определить online или offline

Сообщение unknownby » 2020.02.14, 13:25

yiiliveext писал(а):
2020.02.14, 10:40
Тогда все нормально.
Спасибо за помощь :)
Тема хорошая, а то искал на быструю руку и ничего толкового сразу не нашло.
Добавил еще условие когда пользователь не залогинен, т.к. ошибку выдавало.

Код: Выделить всё

if(!empty(\Yii::$app->user->identity))
Тема успешно закрыта. :D

Закрыто