【问题标题】:Why doesn't my online users page work correctly?为什么我的在线用户页面不能正常工作?
【发布时间】:2013-12-26 14:13:54
【问题描述】:

我想检查一个用户是否在线。我的成员表中有一个状态列。该列记录用户活动的最后一个时间戳。如果用户在 5 分钟内没有做任何事情(意味着他没有活动),用户应该从 users_online 页面上消失。

这是我存储用户最后一个活动的方式:

$setStatus = mysqli_query($mysqli,"UPDATE members SET status = '".time()."' WHERE id = '".$_SESSION['user_id']."'");

现在在 users_online 页面上,我选择状态(最新时间戳)为当前时间的用户名,间隔为 5 分钟。意思是,如果用户最新的时间戳在 5 分钟的间隔内,它应该显示用户 USERNAME。如果超过 5 分钟,他将被标记为离线。

这就是我所拥有的:

$getUsers = mysqli_query($mysqli,"SELECT username FROM members WHERE status = (NOW() - INTERVAL 5 MINUTE)");
if ( mysqli_num_rows($getUsers) > 0 ) { 
     $row = mysqli_fetch_array($getUsers);
echo $row['username']; 
} else {
 echo "Nobody online";
}

现在的问题是;它一直说没有人在线,即使我一直在使用我的帐户。

我错过了还是做错了什么?任何帮助将不胜感激。

【问题讨论】:

    标签: php mysql database status


    【解决方案1】:

    status = (NOW() 应该是 status > (NOW() 在一段时间内,而不是恰好在 5 分钟前

    【讨论】:

    • 直接使用例如运行查询phpadmin 查看你从数据库中得到了什么
    【解决方案2】:

    time() 给出自 1970 年以来的秒数,在你的 sql 语句中你应该说类似

    "SELECT username FROM members WHERE status BETWEEN " . time() - (60*5) . " AND " . time() . ")"
    

    【讨论】:

      【解决方案3】:
      $t =time()-5*60;    
      $strSql = "SELECT username FROM members WHERE status > ".$t;
      echo $strSql;
      
      // run this query into my sql server
      $getUsers = mysqli_query($mysqli,$strSql);
      if ( mysqli_num_rows($getUsers) > 0 ) { 
          $row = mysqli_fetch_array($getUsers);
          echo $row['username']; 
      } else {
          echo "Nobody online";
      }
      

      尝试在 MySQL 服务器中运行查询,然后您将清楚问题:)

      【讨论】:

      • 现在它一直说我在线。 1 分钟后它不会认为我离线。 (我将 5 分钟更改为 1 分钟只是为了测试它)。
      • 现在它说我在线时离线:p
      【解决方案4】:

      使用 PHP time() 函数而不是 mysql now() 函数。

      "SELECT username FROM members WHERE status >= '".time()-(60*5)."')"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多