作者mamaya3 (mamaya)
看板Minecraft
标题[情报] 伺服器状态列表
时间Thu Feb 12 17:38:28 2015
看了版友的政见後 觉得这东西不用等到新版主出来才能做
恰巧身边有长期租用的server可以跑cron (後述)
也恰巧今天不想认真上班 (爆
所以就花了几个小时把原型做出来
不多说 Demo网址如下
http://moomoofarm.net/svList/PTTServer.php
看原本的讨论要验证server状态有两个方向
1. 使用者浏览时才即时查
2. 後台定时查询server 然後纪录最新状态
第一种很直接 但考量到server如果数量众多 大概要跑好一阵子 就算用for loop
跑一群ajax 暴增的连线数不晓得会不会让网管找上门来(汗
第二种是我目前采用的方法 但又更进阶一点 先用後台使用cron下指令每30分钟跑状态
查询的php然後记录到database 除了server主就不用为了一堆injection洗频烦恼外 留
下的纪录也可以看到各server的上线率跟人数增长 如果长时间(ex:7天)无上线状态 可
以判断成关站然後就自动剃除在列表外.. 不过目前资料不多 所以还没做到这步
至於系统的缺点嘛..
就是一定要有server的ip/port 否则无法判断是否仍然在运作 我是有设定非公开address
就不会回传这部分资料 但DB里面还是必须要有 所以如果DB外流 所有的server IP就会被
公开 这点就要各伺服主去衡量
为了开发测试 现在上面的server是我在ptt随便抓的 白名单跟正版验证也是乱写的
如果不符合现实情况请一笑置之 另外server说明跟mods数量还没放上去 等资料齐了再补
另外希望有人整理伺服列表 这样可以早点把log建立起来
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.134.164.249
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Minecraft/M.1423733910.A.CBE.html
※ 编辑: mamaya3 (220.134.164.249), 02/12/2015 17:55:35
1F:推 m339606: 推 有没有兴趣让人可以自行填加维护server?少了自己维护 02/12 18:17
2F:→ m339606: 的麻烦也让大家好利用 02/12 18:17
3F:推 HailHydra: 推 02/12 19:56
4F:推 janice001: 哈哈!棒! 02/12 19:56
6F:→ janice001: .net 02/12 20:06
8F:→ mamaya3: 之後应该会做一个server登录 登录後可以修改自己server的 02/12 20:34
9F:→ mamaya3: ip, 说明等细项 02/12 20:34
10F:推 nick5487: 大推 02/12 21:18
11F:推 bespace: 推!!!! 02/12 21:33
12F:推 janice001: 推推! 02/12 21:33
13F:推 nick5487: 最快达成的政见 未选先做 (? 02/12 21:38
14F:推 BlueCatX: 强大推! 02/12 22:38
15F:推 yuan860721: 太厉害啦~~~ 02/12 22:39
16F:推 arnobee: 呜呜竟然没有BOOOOOM QQ 02/12 22:53
17F:推 k1dave6412: 推 02/12 23:28
18F:推 salinia: 朝圣推 ._. 02/13 00:07
19F:推 joyo21114s: 推 02/13 00:15
20F:推 kizajan: 麦阿信居然还有那麽多人!! 02/13 01:02
21F:推 janice001: ncue 其实已经换伺服器 封测一段时间了 XDDD 02/13 01:16
22F:推 v2266514: 很厉害,让我这个nerb甘拜下风 02/13 01:34
23F:推 t19910422: 推...不愧是玩工业伺服器的玩家(? 02/13 02:00
24F:推 nick5487: bom不是没在招生了吗 02/13 02:56
25F:推 cowbaying: 你用js跑server api不就好了..... 02/13 08:50
26F:推 lother: 大大超强! 02/13 09:31
27F:推 cheko: 辛苦了 02/13 11:02
28F:推 oToToT: すけ~~~~~~~~~~~~ 02/13 11:16
29F:→ oToToT: 为何不用websocket作动态更新 02/13 11:18
30F:→ mamaya3: 不清楚你说的websocket要用在哪方面 麻烦分享一下 02/13 11:35
31F:推 janice001: 应该可以提出一下为什麽要用? 02/13 11:36
32F:→ mamaya3: 考量做到完全即时 我怕会容易出现DDOS问题XD 02/13 11:42
33F:→ lother: 这种变动少的东西不需要用到websocket啦XDD 02/13 12:16
34F:→ oToToT: 我原本想说搞不好可以五分钟或几分钟更新一次XD 02/13 13:29
35F:→ lother: 但几分钟也只需要排程去做~~不需要用到websocket维持连线~ 02/13 14:35
注册单的原型 也做好了
http://moomoofarm.net/svList/PTTSvAdminReg.php
关於注册认证的方式我想了很多方案 後来觉得用server motd验证是比较安全的方式
如果伺服主有兴趣的话 可以来注册看看
※ 编辑: mamaya3 (220.134.164.249), 02/13/2015 16:17:13
36F:推 qscgg: 这个好棒!! 02/13 16:20
38F:推 SmallBeeWayn: C洽村加不进来, 版本问题? 02/15 20:27
39F:→ mamaya3: 今天好像DB执行比较慢 不然资料寄给我 我从後台填 02/15 22:05
试了一下...C洽村可能是版本问题所以查不到 另外统计图表做好了
目前最大问题应该是不支援触碰装置XD
※ 编辑: mamaya3 (220.134.164.249), 02/16/2015 17:45:21
40F:→ mmis1000: 1.5以下的有另外的格式,格式在 02/17 01:11
昨天改了一下 1.4 1.5用上面的方式可以query到
demo :
http://moomoofarm.net/svList/
不过好像没办法连续query 也就是当侦测1.8, 1.7版本失败时
再改用pre 1.5的方式侦测会读不到东西 除非改成所有server先用pre 1.5
的方式去侦测 等timeout再去query 1.8 , 1.7...但这样不太符合效率比例
当然也可以先在DB设定该Server版本 不过要动的东西就比较多了
※ 编辑: mamaya3 (111.240.204.148), 02/18/2015 10:31:00
44F:→ mmis1000: 用pre 1.6侦测1.7会回传 protocol version 99 02/20 18:42
45F:→ mmis1000: 表示是新protcol 02/20 18:42
46F:→ mmis1000: 但有某几版似乎有问题,不会回应旧protocol 02/20 18:44
47F:→ mmis1000: 更正,是会回应127,不是99 02/20 18:47
48F:→ mmis1000: 所以正常而言,除非没开,应该不会timeout 02/20 18:51
有没有Timeout其实不是主要问题问题 只是如果要侦测pre 1.6 必须把method放在第一位
之後再侦测1.8 or pre 1.7才没有回传无资料的问题
但绝大部分server版本是1.6之後 这样做的话总侦测时间差不多是加倍
目前sv数量少还好 但多起来的话 感觉会很没效率
另外这边是你之前给的连结程式测试C洽村的回传json
http://moomoofarm.net/svList/src/14.php
不知道是不是范例程式漏了什麽 没看到protocol资讯 Orz
※ 编辑: mamaya3 (111.240.219.235), 02/20/2015 20:59:38
49F:→ mmis1000: 之前的那个并不是我写的...我的实作是这个 02/20 21:46
51F:→ mmis1000: 是js写的 02/20 21:49
52F:→ mmis1000: protocol version是第二个utf16be string 02/20 21:50
53F:→ mamaya3: 好 有空我试试 谢谢 >"< 02/20 21:58
54F:→ mmis1000: spigot 1.8对旧协议似乎有bug,会无条件timeout 02/20 22:20
55F:→ mmis1000: 阿...好像是伺服器问题,ping boom正常 02/20 22:44
56F:→ mamaya3: 不过现在问题是什麽资料都没回传 倒不是资料解读出问题XD 02/21 17:19
57F:推 mmis1000: 是哪个伺服器才有这种现象吗?没遇过 02/21 18:31
58F:→ mamaya3: 我上面有讲 先用1.8 probe再用pre1.6方式会传回空资料XD 02/21 19:03
59F:→ mmis1000: 你有close掉目前连线再开新连线?或是直接重用? 02/21 19:49
60F:→ mmis1000: 这不应该是会发生的事啊? 02/21 19:49
61F:→ mamaya3: 当然是close後fetch不到资料 我是用C洽村测的 也许是有挡 02/21 21:18
62F:→ mamaya3: 类DDoS的行为 不过其他sv在1.8 fail->close->1.7就没问题 02/21 21:19
63F:→ mmis1000: 我是都先旧再新,反正也差不了几秒钟 02/22 00:17
前面有提过 server数量多起来的话 浪费的时间就很多了
64F:→ mmis1000: 是说php开socket其实颇没效率,换个语言或许才是正解? 02/22 00:19
65F:→ mamaya3: 为了pre1.6要改写核心部分 实在是有点懒啊XD 02/22 00:35
一方面是pre 1.6的server比例真的不多 再者这些sv的活跃玩家我也很怀疑有多少
过年之後手头开始忙了 这侦测这部分大概就还是维持原样吧XD
※ 编辑: mamaya3 (111.240.219.235), 02/22/2015 00:41:57