Home >Backend Development >PHP Tutorial >关于判断用户是否在线的问题!!!

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

WBOY
WBOYOriginal
2016-06-23 14:22:041630browse

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


回复讨论(解决方案)

把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哈! 时间比较紧,一直没时间回复大家!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn