繁体   English   中英

生成在线用户列表?

[英]Generate a list of online users?

我还不足以编写一个聊天应用程序,并且我正在尝试开发一个聊天应用程序,最近我从这里下载了一个聊天应用程序,到目前为止,它是相当不错的,因为我已经在XAMPP上对其进行了测试,但是我有一个问题。 我试图生成一个在线用户列表,以给它一个更实际的应用程序风格的感觉,但是问题是我不知道如何轻松地做到这一点。

当用户登录到我的网站时,将创建一个名为g_username的会话(聊天显示为“ username”,但我会解决该问题),到目前为止,最简单的方法是将其用户名存储在一个名为OnlineUsers并通过Ajax调用该数据,但是另一个问题是,它是基于会话的,有时用户可以直接退出而无需注销,我打算运行一个脚本来从OnlineUsers表和通过删除会话。

如果他们没有注销就离开,他们将永远在线! 我可能会在每个页面上添加一些代码,从而在页面关闭时切换一个ajax事件,该事件是一个脚本,该脚本会杀死其OnlineUsers表记录,但是当用户在页面之间跳转时,该脚本又会向服务器加载无用的查询,据我所知。

在Ajax中创建我的整个网站并不是一个真正的选择,因为它是将来自社交服务的不同网站的负载与社交“图层”(如果愿意)组合到1个“地方”中的负载。

有没有人看到一种可行的方法,这种方法很有意义,并且易于集成,并且可以在没有命令行访问的情况下与Apache一起使用?

您可能每60秒左右在服务器上运行一次cron作业[如果有cpanel],该作业将检查用户最后一次通过聊天发送任何内容的时间(如果最后一次没有显示5分钟),然后从网上删除他们的条目用户列表。

您可以执行以下操作:将用户上次操作的时间戳记存储在数据库中,在输出在线用户时比较该时间戳记,并确保最多在1分钟前完成。

在所有/重要页面上运行:(确定最后一个操作是否已过时,您还可以检查一分钟前是否已完成操作,以减少数据库负载)

if($user['lastAction'] < time()) {
   //update into database, last action is outdated
}

计算在线用户数并且在每个时间戳的循环内

//If the users last action was within a minute, the user is most likely online    
if(($row['lastAction']- time()) > 60*60)
       //count user as online

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM