如何得知每個會員的上線狀態?拜託幫我優化一下代碼

我是硬寫的

$data = $pdo->query(
          "SELECT * FROM `user` "
        );
        $data2 = $pdo->query(
          "SELECT * FROM `user` "
        );

要顯示的地方

<? while($row = mysqli_fetch_array($data)){ ?>
<div class="user-<?=$row['id'];?>"></div>

jquery 與 後端
這個是擺在網頁最下面,因為我的 jquery 託管在下方
否則他會說找不到 $
所以

<script src="jquery.js"></script>

<? while($row = mysqli_fetch_array($data2)){ ?>

  <script>
  online_status_<?=$row['id'];?>();
  function online_status_<?=$row['id'];?>(){
    $('.user-<?=$row['id'];?>').load('/notify?type=xxx&id=<?=$row['id'];?>', function(data){
      $('.user-<?=$row['id'];?>').html(data);
    });
    setTimeout(online_status_<?=$row['id'];?>, 10000);
  };
  </script>
<?}?>

後端

$data = $pdo->query(
      "SELECT * FROM `user`
      WHERE
        `id` = '{$_GET['id']}' "
    );
    if(mysqli_num_rows($data)!=0){

      $row = mysqli_fetch_array($data);
      if(time()-$row['online_status'] > 20){
        echo '離線';
      }else{
        echo '上線';
      }
    }

user 數據表有個 online_status 欄位
我每十秒都會更新一次這個欄位,用時間戳。
於是在這裡判斷是不是上下線 if(time()-$row['online_status'] > 20){
這個方式奇蹟般的可以運行,但絕對不可行!
但我想找大神幫我看看如何優化代碼!!

阅读 1.7k
2 个回答

我已經解決了。。。

会员上线将状态改变,之后增加心跳检测!

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题