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

我是硬寫的

$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){
這個方式奇蹟般的可以運行,但絕對不可行!
但我想找大神幫我看看如何優化代碼!!

蝴蝶不菲
浏览 389回答 2
2回答

互换的青春

我已經解決了。。。

慕田峪4524236

会员上线将状态改变,之后增加心跳检测!
打开App,查看更多内容
随时随地看视频慕课网APP