现在做一个类似于论坛论坛,需求那边要我在后台做一个登录有效用户数的统计(同一个用户登录几次都算一个)。
我采取了一个比较笨的方法,在用户登录时记录他的ID,取出数据转化成数组array,再用array.include?()方法判断是否记录过,没记录过就加入到数组中,再把这个数组转换成字符串存到数据库。
现在登录的人比较少,但当已经有数据庞大时再转化成数组对白实在太笨了,因为我在Action的方法是判断完再跳转到主页的,这对用户体验十分不好。
不知道大家有什么好的办法呢?或者rails已经有很好的插件实现了?
rails统计有效用户数
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- horace_lee 2011-11-07 03:33关注
[quote]
我采取了一个比较笨的方法,在用户登录时记录他的ID,取出数据转化成数组array,再用array.include?()方法判断是否记录过,没记录过就加入到数组中,再把这个数组转换成字符串存到数据库。现在登录的人比较少,但当已经有数据庞大时再转化成数组对白实在太笨了,因为我在Action的方法是判断完再跳转到主页的,这对用户体验十分不好。
[/quote]
你是对的,内存里放一个大数组,能避免就避免。而且,登录的时候,还要等一个action,也需要避免。我的话,可能采取如下的办法
建立一个log表,登录的时候,写log。根据当前用户多少,和实时的需求情况。有两种写法,一个是简单log没有什么逻辑就是一个记录。一个是,稍微有点逻辑看看是不是记录的那种。当然,通常就是前一种就是有什么记录什么,因为,便于以后统计,也便于优化。
然后,要显示在线人数,和在线情况呢,就从表里读。这个可以压到数据库里,简单的呢,就是triger或者存储过程,数据量实在大呢,就写个user-function或者cron job,专门,后台跑统计。
当然,实时性会没有那么高,但也差不出多少。好处就是,生成多种报表啊,报告啊啥的比较容易,用户登录的时候,没有延迟。
个人想法,至于,有没有做这个的插件,还真没注意
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥20 关于游戏c++语言代码问题
- ¥15 如何制作永久二维码,最好是微信也可以扫开的。(相关搜索:管理系统)
- ¥15 delphi indy cookie 有效期
- ¥15 labelme打不开怎么办
- ¥35 按照图片上的两个任务要求,用keil5写出运行代码,并在proteus上仿真成功,🙏
- ¥15 免费的电脑视频剪辑类软件如何盈利
- ¥30 MPI读入tif文件并将文件路径分配给各进程时遇到问题
- ¥15 pycharm中导入模块出错
- ¥20 Ros2 moveit2 Windows环境配置,有偿,价格可商议。
- ¥15 有关“完美的代价”问题的代码漏洞