CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Web 开发 >  PHP

我写了一个在线统计,还有些问题想和大家讨论

楼主arcow(冲星)2004-12-03 18:10:36 在 Web 开发 / PHP 提问

我已写了一个在线统计程序,规定5分钟内活动的为在线用户,通过ip来判断用户  
  但我们学校的机房对本站的访问量很大,一个机房有200台以上机器,如果一个机房内在5分钟有50台机器访问本站的话那么应该在线人数统计为50,但因为一个机房是一个独立ip,所以自然程序统计的结果是在线人数1人。  
  为了达到精确统计,我想改成通过取得客户端网卡MAC地址和访问时间来统计在线人数,此法就能解决我上面提到的问题,但我在网上搜了一下没发现有前人用此法统计在线人数,都是通过ip和时间来统计,我怀疑是不是用取MAC地址统计有什么缺点吗?  
  欢迎大家和我讨论用何种方法统计最佳?或提供其它方法,要求能对我上面的情况进行准确统计! 问题点数:100、回复次数:21Top

1 楼honghe1(和良)回复于 2004-12-03 18:17:23 得分 5

sessionID呢?Top

2 楼ygjwjj(塔克拉玛干---胡杨林)回复于 2004-12-03 18:17:41 得分 5

高安全级别取不到MAC地址.Top

3 楼arcow(冲星)回复于 2004-12-03 22:31:05 得分 0

大家继续啊Top

4 楼Camelot(罕疯)回复于 2004-12-03 22:36:29 得分 5

sessionID+ip最好了。可以的话加cookieTop

5 楼hahawen(变态的大龄青年)回复于 2004-12-03 22:41:52 得分 5

你可以获取他的实际的ip,地址啊。faq里面有帖子讲的。  
   
  不过建议用sessionId就可以了Top

6 楼arcow(冲星)回复于 2004-12-04 08:28:29 得分 0

sessionID  
  怎么得到?是唯一的吗?Top

7 楼coolstr(占卜師oοΟ)回复于 2004-12-04 09:29:15 得分 5

唯一sessionID的取得方法:         session_id();Top

8 楼hflsj(红枫)回复于 2004-12-04 18:45:53 得分 5

取不到客户端的mac地址   用sessionID   吧Top

9 楼arcow(冲星)回复于 2004-12-04 20:41:15 得分 0

对服务器的负担 大不大?  
  是不是一但关掉浏览器后sessionid值又换了?Top

10 楼arcow(冲星)回复于 2004-12-04 20:45:39 得分 0

当所有浏览器关了sessionid值又换了,如果用户在我设定的时间内(比如5分钟)再登陆一次网站的话那么在线统计将会把此人统计成二人在线,明显会使统计人数增多,所以也不是很好的解决方法Top

11 楼honghe1(和良)回复于 2004-12-06 10:05:03 得分 5

用数据库怎么样?思路是这样的,表结构(onlineUser)如下:  
  ---------------------------  
  sessionid     |     newLoginTime|  
  --------------------------  
   
  当页面被加载时,首先   delete   from   onlineUser   where   (newLoginTime和当前时间相差大于指定时]  
   
  间)。然后用用户的sessionid到数据库中查,查到执行update   onlineUser   set   newLoginime=(Now)    
   
  where   sessionid=(sessionid),否则查入一条新的记录。然后select   count(*)   from   onlineUser得到  
   
  新的再线数目。  
   
  缺点是,每加载一次页面,就要执行三条SQL语句(当然可以考虑三条语句同时一次执行),对数据库  
   
  还是有一定的压力。Top

12 楼jxflll(峰)回复于 2004-12-06 10:28:57 得分 10

关注。顶!Top

13 楼arcow(冲星)回复于 2004-12-06 22:50:51 得分 0

to   honghe1(和良)    
  你的这个思路和我想的上面是致的,但这样  
   
  当所有浏览器关了sessionid值又换了,如果用户在我设定的时间内(比如5分钟)再登陆一次网站的话那么在线统计将会把此人         统计成二人在线       ,明显会使统计人数增多,所以也不是很好的解决方法  
   
  统计成二人在线,所以还不是唯一的方法Top

14 楼lingyun2111(凌云)回复于 2004-12-07 10:43:44 得分 10

关注,楼主做完善,可否给我一份,我研究研究啊^_^Top

15 楼arcow(冲星)回复于 2004-12-07 12:08:34 得分 0

up   by   myselfTop

16 楼Jzealot(小瑞)回复于 2004-12-07 12:11:47 得分 10

通过php调用javabean可以得到macTop

17 楼arcow(冲星)回复于 2004-12-07 20:53:57 得分 0

upTop

18 楼arcow(冲星)回复于 2004-12-08 11:32:56 得分 0

upTop

19 楼honghe1(和良)回复于 2004-12-08 12:43:04 得分 5

主要是asp的Global.asa有时并不是像资料上介绍的那样能很好的工作,比如:session_end事件,资料  
   
  介绍用户关闭浏览器和session超时就执行,问题是我关闭浏览器后要等很久(默认20分钟的超时时间)才  
   
  执行,这算什么啊,我和大家也是一样的痛苦的.Top

20 楼honghe1(和良)回复于 2004-12-08 12:45:38 得分 5

怎么办呢~~~~~~~~~~~~Top

21 楼honghe1(和良)回复于 2004-12-08 13:07:27 得分 25

看来用sessionid也不能唯一确定一个人,那还有其他什么方法可以唯一确定一个人呢.  
   
  这样好吗,我们用Cookies.第一次来的兄弟没,查Request.Cookies("sessionid")<>""   ?    
   
  if   Request.Cookies("sessionid")=""   then   '我们的策略认为是新来的朋友  
           
          sessionid=Session.SessionID  
          response.Cookies("sessionID")=sessionid  
          response.Cookies("sessionID").Expires=Now   +   1    
          '一天后为空,不过具体可以用dateAdd()来得到5分钟过期时间,5分钟后这个Cookies为空  
          response.Cookies("sessionID").Domain="www.yourWebSiteName.com"  
          response.Cookies("sessionID").path="/"  
   
          '这里加入上面的数据库插入操作  
   
  else  
         
        '认为在线,更新Cookies的生存期,这里重复上面的Cookies操作就是了  
   
        '加入上面的数据库更新在线时间操作,刷掉过期用户操作  
         
  end   if  
  Top

相关问题

  • 1.讨论:用户在线统计的方法?
  • 讨论 分段统计最佳方案
  • 讨论一个数据统计的设计思路问题
  • 大家讨论下关于实现网站统计的策略
  • 在一个存储过程怎样写(统计).在线等
  • 一个统计查询语句如何写,在线等
  • 如何做在线统计??
  • 在线人数统计?
  • jsp在线人数统计??
  • 做过访问统计的大人进来。讨论个小问题。

关键词

  • 数据库
  • 浏览器
  • 用户
  • cookies
  • 执行
  • 解决
  • mac
  • ip
  • sessionid
  • 统计

得分解答快速导航

  • 帖主:arcow
  • honghe1
  • ygjwjj
  • Camelot
  • hahawen
  • coolstr
  • hflsj
  • honghe1
  • jxflll
  • lingyun2111
  • Jzealot
  • honghe1
  • honghe1
  • honghe1

相关链接

  • Web开发类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo