php判断用户下线,php 获取客户下线时间

客户下线,我查了很多资料,没有什么好解决的办法。

1,正常流程点击退出登陆。可以获取到下线时间。

2,关闭网页可以用js来获取关闭网页事件获取下线时间。

3,不正常套路,断线,pc端故障,断电,关闭浏览器。这个你怎么区分。

这个大家要是有更好的办法,请留下宝贵的意见。

我是用心跳来实现的,workman机制 有个心跳功能

通过心跳每过多少秒发送一次ajax 请求 通过当前id 去存到redis  。

假设20秒存一次我先获取上次的存的时间戳跟现在的时间戳相比如果大于2分钟就为下线。从而存到redis

/**

* 心跳检测

* heartbeat

*/

public function heartbeatOp() {

$rulerid = $this->userinfo['rulerid'];

$key = $rulerid.'time';

$time = time();

$datetime = redis()->lrange($key, 0 ,0);

//判断最后一次的时间是否大于120秒

if(bcsub($time,$datetime['0']) > 120) {

$result = model('kefuLogin')->where(['server_uid' => $rulerid])->order('id desc')->find();

$data = ['id' =>$result['id'], 'server_uid' => $rulerid, 'downtime' => $time+20];

model('kefuLogin')->allowField(true)->isUpdate(true)->save($data);

} else {

$result =redis()->LPUSH($key,$time);

}

return $result;

}

但是这样还是获取不到最终时间,假设这个网站只有你自己。登陆的只有你自己,你一下线就这个方法不执行了好像所以还是直接存数据库比较好

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值