2016-03-04 4 views
0

Я использую Database Sessions в своем приложении CakePHP 3, так как хочу отобразить список сотрудников (пользователей) онлайн в админ-панели сайта.Извлечение данных из cakephp 3 сеанса таблицы

Я хочу получить зарегистрированную информацию о сеансе пользователя (пользователя) s (по крайней мере, идентификатор пользователя), чтобы их данные могли отображаться в списке. данные столбец сеансы таблица содержит информацию о сеансе, но я не знаю, как извлечь из нее определенную информацию. Я хочу Auth информация от него. Он содержит сериализованные данные, соединенные с ключом сеанса.

Sample Data

Config | а: 1: {s: 4: "время", я: 1457067440;} вспышка | а: 1: {s: 4: "Auth"; : 1: {i: 0; a: 4: {s: 7: "message"; s: 52: "Woopsie, у вас нет разрешения на доступ к этой области ."; S: 3: "key"; s : 4: "авт", s: 7: "элемент", s: 13: "Вспышка/по умолчанию"; s: 6: "PARAMS"; а: 1: {s: 5: "класс"; s: 5: "error";}}}} registrar_id | i: 2; registrar_name | s: 10: «Gaurav Makhecha»; unread_site_updates_ids | s: 1: «1»;

Может ли кто-нибудь, пожалуйста, направить меня на то, как я могу достичь этого наилучшим образом.

+0

Вы имеете в виду что-то вроде этого? http://stackoverflow.com/questions/35450008/cakephp-3-display-logged-in-online-users-list/35451529#35451529 (Раскрытие: я написал ответ) – Sevvlor

+3

Данные сеанса сериализованы PHP. Попробуйте использовать [session_decode] (http://php.net/manual/en/function.session-decode.php), чтобы выполнить неэтериализацию. При этом наличие записи в таблице сеансов не обязательно означает, что пользователь фактически зарегистрировался. Он мог бы просто закрыть окно своего браузера, и запись сеанса не будет очищена до запуска сборки мусора. – ADmad

+0

Googling также придумал https://gist.github.com/phred/1201412 – ADmad

ответ

0

Я не знаю, является ли сеанс db лучшим местом для реализации этой функции. Может быть, вы могли бы использовать что-то еще ...

Просто подумав вслух, возможно, вошедший в систему пользователь может при каждом запросе обновить какой-то флаг. Это можно сделать также каждые X минут с JS. Таким образом, вы отфильтровываете «старые» флаги и показываете свежие, которые должны отображать активных пользователей в данный момент.

Есть, вероятно, лучшие способы сделать это, но я думаю, что использование сеанса db не было бы лучшим способом.

+0

Да @ Ей не лучший способ получить точные данные. Я все еще ищу лучший вариант, который может дать желаемый результат, не влияя на производительность и использование ресурсов. – Gaurav

Смежные вопросы