如何在PHP中实现“谁在线”功能?

时间:2009-02-02 07:18:46

标签: php mysql timestamp membership

如何使用PHP实现“谁在线”功能?当然,它将涉及使用时间戳,并且在查看phpBB的会话表之后,可能涉及将最新访问存储在数据库中。

这是一种有效的方法,还是有更好的方法来实现这个想法?

编辑:我不小心制作了这个社区维基,因为我当时还是Stack Overflow的新手。

5 个答案:

答案 0 :(得分:7)

使用数据库跟踪每个登录的人几乎是实现此目的的唯一方法。

我要做的是,在表中或当有人登录时插入带有用户信息和时间戳的行,并在每次有该用户的活动时更新时间戳。我假设所有在过去5分钟内有活动的用户目前都在线。

答案 1 :(得分:4)

根据您实施(以及实施)会话的方式,您可以使用相同的存储媒体来获取活动用户的数量。例如,如果使用基于文件的会话模型,只需扫描包含会话文件的目录并返回会话文件数。如果使用数据库存储会话数据,请返回会话表中的行数。当然,假设您对会话的超时值感到满意(即,如果您的会话超时为30分钟,您将在过去30分钟内获得活动用户列表)。

答案 2 :(得分:0)

我想这样做:

当用户登录时,他的用户ID和时间戳将被插入到表中。 然后每隔5分钟,我将通过ajax调用php脚本来检查用户是否已登录,如果是,则更新表中的时间戳。

如果用户未登录,只需删除他的记录。

答案 3 :(得分:0)

有很多方法可以实现这一点。

您只需轮询即可实现此目的。

按特定时间间隔检查客户端并计算回复的客户端数量。

该值可用作在线用户数。

我认为更好的方法是使用推送技术,而不是每x秒或x分钟检查一次在线人员。

它只是让服务器知道人们何时按事件进入和离开。

因此,当事件来自客户端时,服务器只会增加和减少在线用户计数变量。

我建议Socket.IOAPE查看。

还有许多其他问题需要考虑,例如XMPPJabber

答案 4 :(得分:0)

我认为你可以简单地在php中实现它

创建表用户包括,用户名,密码和状态(1,0)

  1. 在登录系统中分析用户名和密码
  2. 然后,如果用户名和密码匹配,请运行查询以从表用户中进行选择,然后获取
  3. 然后获得状态
  4. 更新用户,将状态设置为1,表示在线
  5. 点击退出时,分析会话用户名和密码,从tbl用户中选择查询并获取状态,然后将状态设置为0表示离线