现在做一个类似于论坛论坛,需求那边要我在后台做一个登录有效用户数的统计(同一个用户登录几次都算一个)。
我采取了一个比较笨的方法,在用户登录时记录他的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,专门,后台跑统计。
当然,实时性会没有那么高,但也差不出多少。好处就是,生成多种报表啊,报告啊啥的比较容易,用户登录的时候,没有延迟。
个人想法,至于,有没有做这个的插件,还真没注意
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 flink cdc无法实时同步mysql数据
- ¥100 有人会搭建GPT-J-6B框架吗?有偿
- ¥15 求差集那个函数有问题,有无佬可以解决
- ¥15 【提问】基于Invest的水源涵养
- ¥20 微信网友居然可以通过vx号找到我绑的手机号
- ¥15 寻一个支付宝扫码远程授权登录的软件助手app
- ¥15 解riccati方程组
- ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
- ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
- ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决