首页 >后端开发 >php教程 >关于判断用户是否在线的问题!!!

关于判断用户是否在线的问题!!!

WBOY
WBOY原创
2016-06-23 14:22:041623浏览

以前一直在听说如何判断用户是否在线这个话题,一直没得要领,今天特意向大家请教下!!谢谢各位!!


回复讨论(解决方案)

把session记录到数据库,同时标示出用户的id号,判断用户是否在线就看这个id号对应的session信息是否过期。不知道我说的对不对,欢迎楼下各位大神拍砖。

去看下session的用法就明白了

主要是判定最后活动时间,设置一个较短的默认在线时间,如果在这个时间内没有活动记录则认为不在线;相反则认为在线。

是我没说清楚,首先当用户通过正常渠道,就是点击退出,这种的话判断用户在线不在线就不用多说。我想问的是当用户没点击退出而是直接关闭了浏览器,那我怎么知道用户还是否在线。

请大家再说下自己的看法,O(∩_∩)O谢谢

把session记录到数据库,同时标示出用户的id号,判断用户是否在线就看这个id号对应的session信息是否过期。不知道我说的对不对,欢迎楼下各位大神拍砖。

请看楼下补充

去看下session的用法就明白了

请看楼下补充

不是一样吗,怎么保存的就怎么判断。

不是一样吗,怎么保存的就怎么判断。

关键是时间设置的问题

1、为什么要判断用户是否在线?
  既然用户不在线,那么他就不会向你发出请求。
  除非你有显示在线人数的需求
2、什么时候判断用户是否在线?
  当你需要显示在线人数时,自然是至少有一个用户发出了请求
  只在响应该请求时统计在线人数即可
  如果没有任何人访问你的网站,即使统计了又有什么用?
3、如何判断用户在线?
  无论是否注册用户,只需统计有效的 session 的个数就可以了
  如果你觉得默认的 session 失效期 1440 秒太长了,你可以按你的需要调整

那么你怎么判断用户是否有活动呢?每隔一段时间请求下服务器?那这个请求不是要在每个页面里都要加吗。。。

这个逻辑是这样,不是请求,因为你的每一个页面都要去判断用户是否在线吧?每个页面都会去读取session信息的,在读取的时候更新这个时间。

可能有需要知道在线好友的需求,但是也是需要一个时间段的

1、ajax定一个 时间段发送到服务端,证明在线,超过则不在

2、设定一个 时间段内,用户未访问页面,发送请求,断开会话,同时知道不在线状态

总之,不可能即时知道用户是否在线,一定需要一个合理的时间段的

这个要看你是如何记录登陆信息的,如果只是简单的session,只需要判断用户信息对应的session是否存在或者过期就行了,其他思路也都差不多了,反正都是个判断是否有效的问题!

看了大家的回复,了解了一些,但是我还是没想通。因为我做的就是想通过判断用户是否在线,然后当他不在线的时候可以自动退出。

然后大家看下,这种的话有什么思路??


那么你怎么判断用户是否有活动呢?每隔一段时间请求下服务器?那这个请求不是要在每个页面里都要加吗。。。

这个逻辑是这样,不是请求,因为你的每一个页面都要去判断用户是否在线吧?每个页面都会去读取session信息的,在读取的时候更新这个时间。

看楼下

可能有需要知道在线好友的需求,但是也是需要一个时间段的

1、ajax定一个 时间段发送到服务端,证明在线,超过则不在

2、设定一个 时间段内,用户未访问页面,发送请求,断开会话,同时知道不在线状态

总之,不可能即时知道用户是否在线,一定需要一个合理的时间段的

对于用ajax异步请求这种的话,需要把那段代码加在每个页面里的吧?

设定时间段看用户是否访问页面这里又怎么实现下?没想到。。。。

然后看下我说的那个再,谢谢

记录用户最后访问时间
检查用户最后访问时间与当前时间的间隔,若超出约定的范围,则视为不在线

判断用户甲是否在线的工作是在用户乙活动期间进行的
判断在服务器端独立进行,与客户端无关

你可以使用一个内存表来更新用户的最后操作时间,然后使用Cron来定时执行清理用户的操作,这样表里的就是最近在线的用户。

我们也可以用关闭浏览器事件吧!

我觉得一楼收的就很详细了

恩   看了大家的回复,思路有一点啦,回头再弄弄看下效果,感谢各位了O(∩_∩)O哈! 时间比较紧,一直没时间回复大家!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn