我现在做一个实时在线人数统计相关的东西,当用户访问时,创建一个session,其中如果用户离开了,我可以通过一些方法来捕捉,虽然还不完全,但是数据会精准一些,但是,如果不是正常关闭的,按照设计,当session的时间达到时,会自动销毁30分钟前访问的用户的记录,我把访问的用户记录到了一个表中,我自己测试都没有问题,但是很奇特的现象出现了,那就是,有一些用户,不是正常关闭的页面,但是,记录却一直保存了下来,我看了日志,发现极有可能是没有调用销毁事件,我有点想不通了,为什么会这样?现在来这里请求大能们的帮助,希望给我一个合理的解释,由于我的财富已经用完了,所以,没有分数,希望大能们不要介意,帮我一把~谢谢

解决方案 »

  1.   

     弄个session监听器,当session创建的时候就用户记录到你的表中,当session销毁的session在清掉表中记录,只需要用户正常注销是,销毁session就OK了,如果是非法的就等session到期,自动销毁。
      

  2.   

    我想你可能还没搞懂我的意思,我做的就是你说的这样,呵呵,奇怪的是,有一部分监听到了,添加了记录,但是没有调用销毁事件,包括session过期都没有调用,我很纳闷,就是想问问,会有这种现象吗?session怎么可能过期了都不调用销毁事件?
      

  3.   

    session的默认生命周期就是30分钟
      

  4.   

    session有个监听器类,里面有个destroy方法,在session注销时会调用该方法,还有session的自动销毁时间是1800秒