首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >显示(游戏)服务器状态的动态Javascript/JSON

显示(游戏)服务器状态的动态Javascript/JSON
EN

Stack Overflow用户
提问于 2012-08-21 19:29:16
回答 2查看 1.9K关注 0票数 0

我拥有多个游戏服务器以及一个显示服务器状态的网站。

问题是网站(服务器状态页面)很慢,因为每次加载页面时,它都需要从远程IP ping/获取数据。

我见过其他地方这样做,比如here,他们使用dynamic JSON (here)来获取服务器状态。

上面显示的那个似乎是立即加载的,我想知道如何准确地实现这一点?

基本上,我希望获取服务器状态,而不会在每次加载它时造成重大延迟(最好类似于上面的那个,因为它工作得很好)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-21 20:03:31

我一直在寻找和选择你发布的例子(我承认,我有偏见)。

我认为(在测试之前也是如此):他们在服务器上运行了一些代码,每隔2秒生成一次数据。这仅仅意味着每次调用json-script时,站点只返回已经存在的数据(比如ping)。

它们甚至可能记录所有这些数据,因此json ping调用只返回最后一个条目。这应该会给出一个几乎即时的答案和可预测的加载时间,这就是我将如何做的。

祝好运!

票数 1
EN

Stack Overflow用户

发布于 2012-08-21 20:09:15

创建两个文件:

1:用于pinging的PHP脚本"ping.php“,输出的数据如下:

代码语言:javascript
复制
$ip = $_REQUEST['ip'];
$cache_file = "ping_{$ip}.json";

if(@filemtime($cache_file) >= (time() - 30)) {
   echo file_get_contents($cache_file);
   return ;
}

// cache is too old. now ping your server 

$json = json_encode(Array(
   'ip' => $ip,
   'players' => $players_count
));

// save new cache
file_put_contents($cache_file, $json);

// output JSON
echo $result;

2:超文本标记语言+ jQuery

代码语言:javascript
复制
<table id="servers">
<tr>
<td class="ip">1.2.3.4:1234</td>
<td class="players"></td>
</tr>
<tr>
<td class="ip">1.2.3.4:1234</td>
<td class="players"></td>
</tr>
<tr>
<td class="ip">1.2.3.4:1234</td>
<td class="players"></td>
</tr>
</table>

<script type="text/javascript">
$('#servers tr').each(function(){
  var ip = $(this).find('td.ip').text();
  var $players = $(this).find('td.players');
  $players.html('loading');

  // use ping.php to get count of players etc
  $.get('ping.php?ip='+ip, function(data){
    $players.html(data.players);
  }});
</script>

只需对每个服务器使用AJAX请求。ping.php将返回服务器状态。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12053845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档