php 怎么知道获取所以当前在线用户
天蓬老师
天蓬老师 2017-04-10 14:47:11
[PHP讨论组]

现在想获取网站上面所有在线用户,有什么好的方法获取吗?

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(3)
怪我咯

使用mysql内存表或者内存性nosql
如果表,表结构: id(自增ID),username(用户名),addtime(添加时间),updatetime(更新时间)
设定超时时间为20分钟。那么在线用户为
select count() from tbl where updatetime>=(NOW()-2060);
如果是nosql(redis为例),那么就更简单了
每个用户添加一个key,可以用usename的hash值,然后设置这个key的过期日期为20分钟。
获取时,只需要执行$redis->keys("session_*");获取所有用户
仅仅是个人想法,仅供参考。

迷茫

http://www.thinkphp.cn/topic/3217.html

大家讲道理

存一个时间戳字段到 db 中,一旦用户有新的操作,类似刷新页面,跳转到其他页面的时候,就更新这个字段。
判断用户是否在线的话,只需要查询这个字段,然后比较当前时间戳,可以设定一个值,例如5分钟,如果差值小于5分钟,则判断用户在线,否则则判断用户离线。

题主可以这样来理解,当用户请求页面后,后端响应并把页面发送过去,之后用户和服务器之间是没有一个所谓的连接状态的,所以最方便的方法就是当用户做出一些活动时主动向后端发送消息,就相当于告诉服务器,"hello, Im still alive"。但是实际上,你很难百分百做到获取用户的真实动作,例如浏览器意外关闭,网络故障等等。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号