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

时间:2013-02-27 12:07:18

标签: php javascript mysql

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

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

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

我知道如何在Javascript,Ajax等中使用计时器来完成所有这些工作,但在我看来,这似乎是一种完成我需要的方式。

我的问题:

这是实现我想要的最佳方式

每个用户每10秒发送一次ajax调用和更新mySQL数据库是不错的编程习惯。

2 个答案:

答案 0 :(得分:1)

我建议您创建一个表“loggedinusers”,其中包含有关当前登录用户的信息。现在你肯定会使用javascipt,如果你想刷新页面上的列表,那就必须使用Ajax查询db来完成。

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

性能不会从小表(只有几千个条目)中被击中。

答案 1 :(得分:1)

嗯,这取决于架构。

如果此信息仅供您和一些额外用户使用 - 您可以每隔1 - 2分钟grep Varnish / Apache / Nginx日志(您可以添加一些额外的日志以显示cookie等)并输出到静态html页面 - 在提供凭证后将可用。

这样做有点不同 - 但不会影响平台的性能。