2016-02-02 21 views
-1

我想沒有在線用戶的管理頁面 這是我的用戶主頁:home.phpPHP AJAX - 使用PHP 我已經努力嘗試計數在線用戶

{function updatetime(){ 
    $.ajax({ 
     url:'update-status.php', 
     success:function(data){ 

     } 
    }); 
} 
setInterval(updatetime,30000);} 

更新status.php

$a=$_SESSION['user']; 
$p="update user set logg='".time()."' where userid='$a'"; 
mysqli_query($con,$p); 

在管理頁面:adhome.php

{function online() 
{ 
    $.ajax({ 
     url:'online.php', 
     success:function(data){ 
      $(#rcon).html(data); 
     } 
    }); 
} 
setInterval(online,30000);} 

online.php:

$a=$_SESSION['user']; 

    $m1="SELECT * from user where userid='$a'"; 

     echo $m2=mysqli_query($con,$m1) or die(mysqli_error($con)); 
      $m3=mysqli_num_rows($m2); 
      $m4=mysqli_fetch_array($m3) or die(mysqli_error($con)); 
      if($m3==1) 
      { 
      $b=time()-$m4['logg']; 
      if($b<(120)) 
       { 
       $un= $m4['uname']; 
       echo '<tr><td>'.$un.'</td></tr>'; 
       } 
      }enter code here 

它不顯示錯誤 我沒有收到用戶管理頁面BT分貝正在更新 ,也請解釋時間() - $ M4 [「LOGG」]。我搜查了很多bt他們不滿意我。

+2

所以由語句_I試圖hard_你實際上意味着處理easyly超過5.000的連接你是否複製了很多代碼,現在你發現了一些你實際上並不瞭解你想讓別人給你解釋的代碼。爲什麼不問你出租的人呢? – RiggsFolly

+1

非在線的'online.php'代碼,所以首先想想你究竟想要什麼代碼去做,然後重新開始。我相信這個過程被稱爲_ReFactoring_ – RiggsFolly

+0

我可以使用會話。 Bt我想嘗試使用ajax。老實說,我不知道阿賈克斯。我只是在學習它。你可以用ajax解釋我嗎? –

回答

-1

對於當前的在線用戶來說,PHP和Ajax是一個壞主意,因爲它可以創建高CPU和RAM usag。

更好的解決方案是使用socket.io的node.js。 (http://socket.io

使用socket.io,您可以創建真正快速的在線用戶計數器,而無需使用任何大型服務器和Bandwith。

統計: 的Node.js和Socket.io可以約12MB/s的帶寬和16GB的RAM和國米i7處理器

+1

只是16G內存,哇,我會給16Gig的內存 – RiggsFolly

+0

是的16GB RAM是正確的,所以我讀了它。它也可以處理600.000連接與更好的服務器http://www.jayway.com/2015/04/13/600k-concurrent-websocket-connections-on-aws-using-node-js/ –

+0

是的,我只是評論那16Gig的RAM並不是一小部分內存,其大量的內存,特別是如果他在一個共享的主機方案, – RiggsFolly