我'我希望用户看到当前登录到我的网站的所有其他人


I'd like users to see everyone else who is currently logged into my site

我正在使用Javascript, PHP和mySQL编写一个相当复杂的项目管理系统。所有用户都存储在一个mySQL表中,当他们登录时,我在PHP中设置一个会话变量,并记录他们上次登录的时间。我这样做只是为了让人们不能通过按F5来增加访问量。

我希望所有登录的用户都能看到当前登录到该站点的所有其他用户的列表。

我能看到解决这个问题的唯一方法是触发一个PHP脚本(比如每10秒),它会做两件事。将当前用户的当前时间记录到mySQL表中,然后查看所有其他用户的最后一次日志时间。任何上次登录时间比当前时间早20秒的人都会被显示为登录。

我知道如何在Javascript, Ajax等中使用计时器来完成所有这些,但对我来说,这似乎是一种相当不优雅的方式来完成我所需要的。

我的问题:

这是实现我想要的最好方法吗

对于每个用户,发送ajax调用和更新mySQL数据库的频率为每10秒,这是良好的编程实践吗?

这取决于架构。

如果这些信息只对你和一些额外的用户可用-你可以每1 - 2分钟grep Varnish/Apache/Nginx日志(你可以添加一些额外的日志来显示cookie等)并输出到静态html页面-这将在提供凭据后可用

这是一种有点不同的方法,但不会影响您的平台的性能。

我建议您创建一个名为"loggedinusers"的表,其中包含有关当前登录的用户的信息。现在,如果您想要刷新页面上的列表,您肯定会使用javascript,并且必须使用带有计时器db的Ajax查询来完成。

另一个解决方案是在页面上有一个php模块,当您导航到每个页面时将查询数据库。因此,当用户浏览您的站点时,您将获得有关新登录用户的信息。我想这很合理。

性能不会因为一个小表(只有几千个条目)而受到影响。