【问题标题】:Extracting data from cakephp 3 sessions table从 cakephp 3 会话表中提取数据
【发布时间】:2023-03-31 11:03:01
【问题描述】:

我在我的 CakePHP 3 应用程序中使用 Database Sessions,因为我希望在网站的管理面板中显示在线员工(用户)列表。

我想检索登录的员工(用户)的会话信息(至少是用户 ID),以便他们的详细信息可以显示在列表中。 sessions 表的 data 列包含会话信息,但我不知道如何从中提取特定信息。我想从中获得 Auth 信息。它包含以某种方式与会话密钥连接的序列化数据。

数据样本

配置|a:1:{s:4:"time";i:1457067440;}Flash|a:1:{s:4:"auth";a:1:{i:0;a:4 :{s:7:"message";s:52:"Woopsie, 您无权访问该 area.";s:3:"key";s:4:"auth";s:7:"element";s:13:"Flash/default";s:6:"params";a:1: {s:5:"class";s:5:"error";}}}}registrar_id|i:2;registrar_name|s:10:"Gaurav Makhecha";unread_site_updates_ids|s:1:"1";

谁能指导我如何以最佳方式实现这一目标。

【问题讨论】:

  • 你的意思是这样的吗? stackoverflow.com/questions/35450008/…(披露:我写了答案)
  • 会话数据由 PHP 序列化。尝试使用session_decode 来反序列化它。也就是说,在会话表中有记录并不一定意味着用户实际上已登录。他可能刚刚关闭了浏览器窗口,并且在运行垃圾收集之前不会清除会话记录。
  • 谷歌搜索也想出了gist.github.com/phred/1201412
  • @Sevvlor 谢谢你的回答。我已经阅读过,但使用数据库会话会给我带来更好的性能。
  • 谢谢@ADmad。是的,我知道这一点。我试过但找不到任何解决方案来获取登录用户的准确(实时)数据。有什么建议吗?

标签: session cakephp cakephp-3.0


【解决方案1】:

我不知道会话数据库是否是实现该功能的最佳场所。也许您可以使用其他东西...

只要大声思考,也许登录用户可以在每次请求时更新某种标志。这也可以用 JS 每 X 分钟完成一次。这样一来,您就可以过滤掉“旧”标志并显示新标志,这应该会立即显示活跃用户。

可能有更好的方法可以做到这一点,但我认为使用会话数据库并不是最好的方法。

【讨论】:

  • 是的@Eber 这不是获取准确数据的最佳方式。我仍在寻找更好的选择,它可以在不影响性能和资源使用的情况下提供所需的结果。
猜你喜欢
  • 2016-01-01
  • 2016-01-20
  • 2012-10-09
  • 1970-01-01
  • 1970-01-01
  • 2017-01-22
  • 2016-01-18
  • 2015-11-13
  • 1970-01-01
相关资源
最近更新 更多