用户在线,CodeIgniter和会话

时间:2012-01-22 10:19:09

标签: php codeigniter session

好的,我正在使用CodeIgniter作为我的MVC来处理我正和我的几个伙伴一起工作的项目。我们还使用CI的数据库会话支持。有了这些,我知道有“谁在线”的概念已经存在,但它们都没有真正适用于我们的需求。我们推出的服务是一个独立的SaaS系统,但同时我们也允许我们的用户彼此进行通信。有了这个,我们就让他们分享他们想要的具体信息,例如谁在线的时间,地点等等。所以说我知道CI的会话捕获IP,就像用户登录时一样。

所以我想知道的是,认为我可以利用会话数据是什么,将会话数据库中的ips与某些意义上的登录进行比较,这是一个合理的想法构建我自己的小“谁在线“特定于通过我们的服务彼此”友好“的人。如果这是一个好的和潜在的想法,那么你们有什么建议作为解决它并为这种类型的显示器处理它的方法?我只是问因为我不是100%通过CI的会话如何工作所以我不确定它是否会像我目前想象的那样对我有利。

如果我的想象力随之消失,那么解决这个问题会有什么好办法呢?

修改的 登录2台计算机后,我发现数据库中的CI会话有2个具有相同的IP,所以我最初的想法模式似乎有缺陷。

还要感谢Down投票,无论你是谁,你至少可以说评论为什么,我很想知道如何实现这个想法,但我无法得到反馈呢?如果你知道一篇文章或帖子可以帮助我,那么至少指出我的意思,因为我的搜索与我在这里解释的内容没有任何关系。

1 个答案:

答案 0 :(得分:4)

基本上,您要检查_ci_sessions表(或您的名字是什么),以查找last_activity列在当前时间的某个范围内(5分钟,10分钟等)的记录)。使用HTTP,没有很好的方法可以知道某人放弃会话的确切时刻(除非他们明确注销,并且您自己销毁会话)。你可以用套接字做到这一点,但这对于像这样的东西来说通常有点过分。

在获得“潜在”会话列表后,您仍然需要遍历每个会话(记得要反序列化user_data列!)以找到具有正确userdata键/值的那些基于您的身份验证系统的“登录”。我首先要做的是获得概念证明,然后找到一种方法来缓存几个请求的结果,因为它无论如何都不是请求级准确的。如果没有每个请求的额外负载,你会做得更好。