jacksv123 2011-11-06 11:01
浏览 221
已采纳

rails统计有效用户数

现在做一个类似于论坛论坛,需求那边要我在后台做一个登录有效用户数的统计(同一个用户登录几次都算一个)。

我采取了一个比较笨的方法,在用户登录时记录他的ID,取出数据转化成数组array,再用array.include?()方法判断是否记录过,没记录过就加入到数组中,再把这个数组转换成字符串存到数据库。

现在登录的人比较少,但当已经有数据庞大时再转化成数组对白实在太笨了,因为我在Action的方法是判断完再跳转到主页的,这对用户体验十分不好。

不知道大家有什么好的办法呢?或者rails已经有很好的插件实现了?
  • 写回答

3条回答 默认 最新

  • horace_lee 2011-11-07 03:33
    关注

    [quote]
    我采取了一个比较笨的方法,在用户登录时记录他的ID,取出数据转化成数组array,再用array.include?()方法判断是否记录过,没记录过就加入到数组中,再把这个数组转换成字符串存到数据库。

    现在登录的人比较少,但当已经有数据庞大时再转化成数组对白实在太笨了,因为我在Action的方法是判断完再跳转到主页的,这对用户体验十分不好。 
    

    [/quote]
    你是对的,内存里放一个大数组,能避免就避免。而且,登录的时候,还要等一个action,也需要避免。

    我的话,可能采取如下的办法
    建立一个log表,登录的时候,写log。根据当前用户多少,和实时的需求情况。有两种写法,一个是简单log没有什么逻辑就是一个记录。一个是,稍微有点逻辑看看是不是记录的那种。

    当然,通常就是前一种就是有什么记录什么,因为,便于以后统计,也便于优化。

    然后,要显示在线人数,和在线情况呢,就从表里读。这个可以压到数据库里,简单的呢,就是triger或者存储过程,数据量实在大呢,就写个user-function或者cron job,专门,后台跑统计。

    当然,实时性会没有那么高,但也差不出多少。好处就是,生成多种报表啊,报告啊啥的比较容易,用户登录的时候,没有延迟。

    个人想法,至于,有没有做这个的插件,还真没注意

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥50 易语言把MYSQL数据库中的数据添加至组合框
  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况