4

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

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

编辑:我无意中创建了这个社区 wiki,因为当时我还是 Stack Overflow 的新手。

4

5 回答 5

7

使用数据库来跟踪每个登录的人几乎是做到这一点的唯一方法。

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

于 2009-02-02T07:25:04.673 回答
4

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

于 2009-02-02T07:34:10.040 回答
0

我想这样做:

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

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

于 2011-09-10T08:02:48.153 回答
0

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

您可以简单地通过轮询来实现这一点。

每隔一定时间检查客户端,统计回复的客户端数量。

该值可以用作在线用户数。

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

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

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

我推荐Socket.IOAPE看看。

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

于 2011-10-07T02:42:42.743 回答
0

我想你可以简单地用 php

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

  1. 在登录系统中分析用户名和密码
  2. 然后如果用户名和密码匹配,运行查询从表用户中选择,并获取它
  3. 然后获取状态
  4. 更新用户,设置状态为1,表示在线
  5. 当你点击注销时,分析会话用户名和密码,选择从tbl用户查询并得到状态,然后将状态设置为0表示离线。
于 2016-08-05T04:33:27.063 回答