Maison >développement back-end >tutoriel php >关于判断用户是否在线的问题!!!
以前一直在听说如何判断用户是否在线这个话题,一直没得要领,今天特意向大家请教下!!谢谢各位!!
把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哈! 时间比较紧,一直没时间回复大家!