賽中實時更新積分單系統、競賽報名及分數統計
本帖最后由 StephDC 于 2015-10-24 19:40 编辑賽中積分單及分數實時統計系統十分重要,無論是在以後的論壇賽中或是更多大型賽事中,這樣的一套系統都會幫助到大家直接關注到賽況,可以說是必不可少(廢話不說了)
本次PrimeGrid賽事作為我這個系統的第一次測試,應該會暴露出不少問題,於是就單獨開個帖子來收下反饋以及做個Bug List / Feature Request好了
Update 2014-12:現在到第二次測試了,第一次測試結果及各種文件存檔至 http://personal.psu.edu/svz5160/os/webserver/BOINC/PG20141205處。
Update 2015-6: BOINC Pentathlon 第三次測試,依然有不少問題,但是也順手修復了一些。這是本積分單系統第一次用在多項目統計競賽上,於是多項目統計功能順手寫好加進去了。第一次統計原始數據由於太老已經刪掉,但是積分單依然保留。第二次測試結果未保留。現在最大的問題就是如果沒能在賽前註冊並且報名的話,起始分數就會有問題(下面列表第一個)。因此提議:不然以後論壇需要個人分數的競賽調整開賽時間以適配伺服器端數據導出時間?
Update 2015-10: 在 Late drop 掉一節課之後終於又有時間來弄這個了。把系統文件結構調整了一下,現在讓每個項目都把檔案存進指定的檔案夾中,好看也好收拾。順便加入了排名功能。
積分單系統地址:http://personal.psu.edu/svz5160/os/webserver/BOINC
目前遇到的問題有:
[*]開賽時分數如何取得,以哪個為準——本次我用的是開賽分數直接從開賽時最近的 stats/user.gz 中取得的數據,但是那個文件中的數據本次比賽中是2014-12-04T20:44:27生成的,到開賽時(2014-12-05T00:00:00)已經有3小時15分鐘的誤差,造成的結果就是在開賽時(2014-12-05T00:00:02)用XMLRPC取得的數據中已經有部分用戶有數萬甚至數十萬的點差。stats/user.gz的下一個版本是在2014-12-05T00:44:45生成的,這樣也仍然有可能造成數萬點點差,而且也導致了比賽時間推遲了將近45分鐘。如果用回開賽時(2014-12-05T00:00:02)XMLRPC取得的數據又會出現後來加入的用戶無法獲得準確起始點數的問題。
[*]Crontab執行誤差——看標題列就能看出,每次更新統計數據的時間都不是整點,而是整點過後幾秒,是否可作為實驗誤差無視?Pentathlon經驗告訴我們,當競賽項目與人數增加後,事情變得有點大條,三個項目並行就讓第三個項目執行時間差了1min。不過作為實驗誤差,應該還是在可接受範圍內的。再說這誤差好像比stats/user.gz以及BOINCStats小多了,就無視吧,省得還觸發例如自動結束運行時間超過30s的進程一類的網站Shared Host, VPS等的限制。
[*]需要顯示哪些統計數據——目前我設計的是前五列分別顯示論壇暱稱、BOINC項目暱稱、跨項目ID前16位(32位太長,不美觀)、BOINC項目ID、比賽起始點數,然後後面都是每小時點數與起始點數的點差。由於PSV不支援「合併單元格」,可能每個用戶名每個時刻都只能顯示一個數據,因此需要做決定顯示每小時點數、每小時與起始點數的點差(當前)或者每小時與上小時的點差。
[*]如何排名——我暫時還沒想出來如何在stats.dat中插入並自動更新排名列,也不知道應該顯示在哪裡,目前的臨時解決方案是讓整個表格可按各種關鍵字排序。這個或許我可以好好想想然後弄出來。2015-10 完成
隨手記:
[*]PrimeGrid的stats/user.gz是每4小時的44分至45分更新一次
[*]BOINCStats的PrimeGrid每日積分2014-12-05來自UTC 12:45的更新數據,我的備份地址:http://personal.psu.edu/svz5160/ ... blicdata/user.gz.13(好奇怪)
源碼:http://personal.psu.edu/svz5160/os/webserver/hourlyStats.tar.bz2 最新版本:1.5
依賴關係:Python 3, PHP 4 with exec support, shell (Tested: dash 0.5+, bash 4+, zsh 5+, may be compatible with other lower version shells.), cron
可否将代码开源一下,fork一个? 弄错了!!昨晚就开始拼命跑了。白天家里的机器歇菜关机。今天晚上继续。 gameboybf2142 发表于 2014-12-4 23:49
可否将代码开源一下,fork一个?
源碼已共享。下載鏈接見頂樓。
仰视 cron代码前面加个sleep xx;不就好了么 日常Update,測試結束了,現在可以看看效果如何了
好像看起來還不錯
Update: 在開賽後添加用戶的功能已經加入,尚未測試,正在測試中⋯⋯ 很强大!
页:
[1]