Php 如何显示当前有多少用户在线

Php 如何显示当前有多少用户在线,php,ajax,jquery,Php,Ajax,Jquery,我需要向我的用户显示当前在线的其他用户,我可以维护一个登录和注销日志,基于此,我可以计算所有在线用户,但很多时候用户没有注销,因此我的计数无效 以下是显示用户在线的条件: 用户刚刚登录 用户当前正在查看该页面 用户打开了左侧选项卡,但当前正在另一个选项卡中浏览 “使用”选项卡已打开,但已最小化web浏览器 以下是不应在线显示使用的标准 用户已注销 用户dosent希望在线显示 用户关闭了浏览器,但选项卡处于打开状态 用户关闭了浏览器 我不知道该怎么做。我在服务器端使用php,mysql和Mong

我需要向我的用户显示当前在线的其他用户,我可以维护一个登录和注销日志,基于此,我可以计算所有在线用户,但很多时候用户没有注销,因此我的计数无效

以下是显示用户在线的条件:

  • 用户刚刚登录

  • 用户当前正在查看该页面

  • 用户打开了左侧选项卡,但当前正在另一个选项卡中浏览

  • “使用”选项卡已打开,但已最小化web浏览器

  • 以下是不应在线显示使用的标准

  • 用户已注销

  • 用户dosent希望在线显示

  • 用户关闭了浏览器,但选项卡处于打开状态

  • 用户关闭了浏览器

  • 我不知道该怎么做。我在服务器端使用php,mysql和MongoDB作为数据库 请帮我做这个


    提前感谢

    几乎所有显示用户在线的网站实际上都显示“用户在最后X分钟内在线”。只需跟踪每个用户最后一次加载一个页面,并计算在最后X分钟有多少用户(X是你想考虑的任何“在线”)< /P> < P>几乎所有显示在线用户的站点实际上都显示了“在最后X分钟内在线的用户”。只需跟踪每个用户最后一次加载一个页面,并计算在最后X分钟有多少用户(X是你想考虑的任何“在线”)< /P> < P>有一种方法可以确定用户是“在线”的。要做到这一点,您需要了解,对于“在线”用户,通常指的是在那一刻在线的用户;虽然检查这一点并不容易(甚至不可能),但检查用户是否在
    x
    时间内做了任何操作非常容易,这是大多数程序员的选择

    这很简单:

  • 在名为
    last\u activity
    的数据库中为每个登录用户创建一个字段
  • 每次用户访问页面时,您都将
    last\u activity
    设置为当前
    time()
    stamp
  • 您定义了一个
    $x
    秒数,用户在被视为脱机之前可以空闲(不浏览任何新页面)。(通常为15分钟、30分钟或1小时)
  • 您可以执行一个简单的查询,如
    “SELECT*FROM users WHERE last_activity>=”。(时间()-$x)
  • 您现在有一个在
    $x
    秒内加载页面的用户列表
  • 与其他东西不同,在PHP和web浏览器中,无法确定用户何时关闭了浏览器中的某个页面,因此从技术上讲,无法知道用户何时关闭浏览器窗口或退出网站

    顺便说一句,我撒谎了,有一种方法,但它非常昂贵,所以请仔细考虑,因为它可能会使您的服务器崩溃或诸如此类:

  • 在用户表中创建
    last_activity
    字段(如下所示)
  • 创建一个Javascript代码(使用AJAX),每
    y
    秒需要
    update.php
    (只是一个示例)
  • 把javascript放在你网站的每一页上(考虑
    y
    是你能做到的最大值(<30秒可能不好))
  • 创建
    update.php
    ,在其中使用当前
    time()更新
    last\u活动
  • 当您想查找在线人员时,请使用与之前相同的查询方法,即使用
    $x=$y+1

  • 使用最新的解决方案,您可以确保,每当用户不再在页面上时,他也不会运行AJAX调用,然后在
    y
    秒内,它将不再被视为在线。这是一个与第一个非常相似的解决方案,但您可以将
    y
    设置为比前一个
    x
    小。通过这种方式,您可以获得有关用户浏览器窗口当前状态的更多信息,但数据库负载比以前大得多。

    只有一种方法可以确保用户“在线”。要做到这一点,您需要了解,对于“在线”用户,通常指的是在那一刻在线的用户;虽然检查这一点并不容易(甚至不可能),但检查用户是否在
    x
    时间内做了任何操作非常容易,这是大多数程序员的选择

    这很简单:

  • 在名为
    last\u activity
    的数据库中为每个登录用户创建一个字段
  • 每次用户访问页面时,您都将
    last\u activity
    设置为当前
    time()
    stamp
  • 您定义了一个
    $x
    秒数,用户在被视为脱机之前可以空闲(不浏览任何新页面)。(通常为15分钟、30分钟或1小时)
  • 您可以执行一个简单的查询,如
    “SELECT*FROM users WHERE last_activity>=”。(时间()-$x)
  • 您现在有一个在
    $x
    秒内加载页面的用户列表
  • 与其他东西不同,在PHP和web浏览器中,无法确定用户何时关闭了浏览器中的某个页面,因此从技术上讲,无法知道用户何时关闭浏览器窗口或退出网站

    顺便说一句,我撒谎了,有一种方法,但它非常昂贵,所以请仔细考虑,因为它可能会使您的服务器崩溃或诸如此类:

  • 在用户表中创建
    last_activity
    字段(如下所示)
  • 创建一个Javascript代码(使用AJAX),每
    y
    秒需要
    update.php
    (只是一个示例)
  • 把javascript放在你网站的每一页上(考虑
    y
    是你能做到的最大值(<30秒可能不好))
  • 创建
    update.php
    ,在其中使用当前
    time()更新
    last\u活动