php如何利用session和mysql数据库来统计用户在线时常

php如何利用session和mysql数据库来统计用户在线时常,第1张

您好,很高兴回答您的问题,希望我的回答能帮助到您,蟹蟹

用户在线时长计算,首先,用户登录成功把登录时间以及用户id保存在session中

当用户退出时,当前时间减去登录时间就是用户在线时长

    //用户登录

    public function dologin(){

        $adminname = I("param.adminname","","trim")//用户名

        $password = I("param.password","","trim")//密码

        $where = "adminname = '{$adminname}' and password = md5('{$password}')"

        $data['login_time'] = time()

        $is_find = M("users_admin")->where($where)->find()

        if($is_find){

            $result = M("users_admin")->where($where)->setField($data)

            if ($result){

                $_SESSION['uid'] = $is_find['id']

                $_SESSION['login_time'] = $data['login_time']

                echo("登录成功")

            }

        }    

    } //用户退出代码

public function logout(){

   $login_time = $_SESSION['login_time']

   $now = time()

   $line_time = $now-$login_time

   $result = M("users_admin")->where("id = ".$_SESSION['uid'])->setField('line_time',$line_time)

   session(null)

   echo("成功退出")

}

楼上说的差不多,我再详细说一下:登陆以后你肯定会记录它的session值,可以把它写入到一个保存session的表中,并记录登陆时间,然后其中加上一个标志字段,用来判断其状态,如果用户退出则可以删除其session记录,这样你可以根据时间来判断任意时间段内在线的用户,你可以再自行设置条件,如多长时间没有活动就删除session等,这样我觉得实现应该是比较简单的,这就是一个思路,更详细的你可以扩展想一想。

在用户数据库里面增加 状态数据字段,

例如在线为1,离开为0,隐身为2,等等

登录的时候进行查询,

如果为1或者2,就进行怎么处理,

如果为0也就是已经退出了,就进行怎么处理

自己试下,我会关注的

要写的与qq一样的话有点难度

1,用户关闭浏览器发送注销请求

2,如果发送失败,

服务器端处理,用户很长时间(例如30分钟)没有反应,就给注销掉

1,我想客户端还可以每5分钟发送一次请求,看网络是否畅通,如果失败还可以显示客户掉线的功能,然后是否重新连接

2,这样的话,我们可以记录客户最后在线的时间了,比较现在的时间和最后在线的时间就很好解决了


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/434027.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-28
下一篇2023-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存