作者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://www.ptt.cc/bbs/Minecraft/M.1423733910.A.CBE.html
※ 編輯: mamaya3 (220.134.164.249), 02/12/2015 17:55:35
推 m339606: 推 有沒有興趣讓人可以自行填加維護server?少了自己維護 02/12 18:17
→ m339606: 的麻煩也讓大家好利用 02/12 18:17
推 HailHydra: 推 02/12 19:56
推 janice001: 哈哈!棒! 02/12 19:56
→ janice001: .net 02/12 20:06
→ mamaya3: 之後應該會做一個server登錄 登錄後可以修改自己server的 02/12 20:34
→ mamaya3: ip, 說明等細項 02/12 20:34
推 nick5487: 大推 02/12 21:18
推 bespace: 推!!!! 02/12 21:33
推 janice001: 推推! 02/12 21:33
推 nick5487: 最快達成的政見 未選先做 (? 02/12 21:38
推 BlueCatX: 強大推! 02/12 22:38
推 yuan860721: 太厲害啦~~~ 02/12 22:39
推 arnobee: 嗚嗚竟然沒有BOOOOOM QQ 02/12 22:53
推 k1dave6412: 推 02/12 23:28
推 salinia: 朝聖推 ._. 02/13 00:07
推 joyo21114s: 推 02/13 00:15
推 kizajan: 麥阿信居然還有那麼多人!! 02/13 01:02
推 janice001: ncue 其實已經換伺服器 封測一段時間了 XDDD 02/13 01:16
推 v2266514: 很厲害,讓我這個nerb甘拜下風 02/13 01:34
推 t19910422: 推...不愧是玩工業伺服器的玩家(? 02/13 02:00
推 nick5487: bom不是沒在招生了嗎 02/13 02:56
推 cowbaying: 你用js跑server api不就好了..... 02/13 08:50
推 lother: 大大超強! 02/13 09:31
推 cheko: 辛苦了 02/13 11:02
推 oToToT: すけ~~~~~~~~~~~~ 02/13 11:16
→ oToToT: 為何不用websocket作動態更新 02/13 11:18
→ mamaya3: 不清楚你說的websocket要用在哪方面 麻煩分享一下 02/13 11:35
推 janice001: 應該可以提出一下為什麼要用? 02/13 11:36
→ mamaya3: 考量做到完全即時 我怕會容易出現DDOS問題XD 02/13 11:42
→ lother: 這種變動少的東西不需要用到websocket啦XDD 02/13 12:16
→ oToToT: 我原本想說搞不好可以五分鐘或幾分鐘更新一次XD 02/13 13:29
→ 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
推 qscgg: 這個好棒!! 02/13 16:20
推 SmallBeeWayn: C洽村加不進來, 版本問題? 02/15 20:27
→ mamaya3: 今天好像DB執行比較慢 不然資料寄給我 我從後台填 02/15 22:05
試了一下...C洽村可能是版本問題所以查不到 另外統計圖表做好了
目前最大問題應該是不支援觸碰裝置XD
※ 編輯: mamaya3 (220.134.164.249), 02/16/2015 17:45:21
→ 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
→ mmis1000: 用pre 1.6偵測1.7會回傳 protocol version 99 02/20 18:42
→ mmis1000: 表示是新protcol 02/20 18:42
→ mmis1000: 但有某幾版似乎有問題,不會回應舊protocol 02/20 18:44
→ mmis1000: 更正,是會回應127,不是99 02/20 18:47
→ 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
→ mmis1000: 之前的那個並不是我寫的...我的實作是這個 02/20 21:46
→ mmis1000: 是js寫的 02/20 21:49
→ mmis1000: protocol version是第二個utf16be string 02/20 21:50
→ mamaya3: 好 有空我試試 謝謝 >"< 02/20 21:58
→ mmis1000: spigot 1.8對舊協議似乎有bug,會無條件timeout 02/20 22:20
→ mmis1000: 阿...好像是伺服器問題,ping boom正常 02/20 22:44
→ mamaya3: 不過現在問題是什麼資料都沒回傳 倒不是資料解讀出問題XD 02/21 17:19
推 mmis1000: 是哪個伺服器才有這種現象嗎?沒遇過 02/21 18:31
→ mamaya3: 我上面有講 先用1.8 probe再用pre1.6方式會傳回空資料XD 02/21 19:03
→ mmis1000: 你有close掉目前連線再開新連線?或是直接重用? 02/21 19:49
→ mmis1000: 這不應該是會發生的事啊? 02/21 19:49
→ mamaya3: 當然是close後fetch不到資料 我是用C洽村測的 也許是有擋 02/21 21:18
→ mamaya3: 類DDoS的行為 不過其他sv在1.8 fail->close->1.7就沒問題 02/21 21:19
→ mmis1000: 我是都先舊再新,反正也差不了幾秒鐘 02/22 00:17
前面有提過 server數量多起來的話 浪費的時間就很多了
→ mmis1000: 是說php開socket其實頗沒效率,換個語言或許才是正解? 02/22 00:19
→ 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