鍍金池/ 問(wèn)答/PHP  HTML/ 如何得知每個(gè)會(huì)員的上線狀態(tài)?拜託幫我優(yōu)化一下代碼

如何得知每個(gè)會(huì)員的上線狀態(tài)?拜託幫我優(yōu)化一下代碼

我是硬寫(xiě)的

$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 與 後端
這個(gè)是擺在網(wǎng)頁(yè)最下面,因?yàn)槲业?jquery 託管在下方
否則他會(huì)說(shuō)找不到 $
所以

<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 數(shù)據(jù)表有個(gè) online_status 欄位
我每十秒都會(huì)更新一次這個(gè)欄位,用時(shí)間戳。
於是在這裡判斷是不是上下線 if(time()-$row['online_status'] > 20){
這個(gè)方式奇蹟般的可以運(yùn)行,但絕對(duì)不可行!
但我想找大神幫我看看如何優(yōu)化代碼??!

回答
編輯回答
毀了心

會(huì)員上線將狀態(tài)改變,之后增加心跳檢測(cè)!

2017年7月9日 03:57
編輯回答
厭惡我

我已經(jīng)解決了。。。

2017年8月14日 12:51