2010-03-20 42 views
0

我們假設我正在開發一個AJAX,PHP國際象棋遊戲。 在比賽期間,玩家的一次動作會通知另一名玩家,但我們並未保存該信息。通常情況下,我們以前每次玩家進行移動並將更新位置顯示給其他玩家時,都會在MySQL中存儲。 我想要的是儘可能減少MySQL負載,服務器對兩個玩家之間的移動不感興趣。服務器將只保存最終結果,比如誰勝出。 那我該怎麼辦?使用PHP和AJAX,兩個客戶端可以在沒有MySQL的情況下交換數據嗎?

+1

如果服務器沒有跟蹤碎片的移動和位置,是不是可以作弊? – 2010-03-20 18:51:56

+0

@安迪如果只是人與人的比賽,那麼很難 - 兩個客戶都會保留完整的歷史記錄並進行比較。如果是人與系統,那麼,我的徽章在十秒內在哪裏呢? :) – 2010-03-20 18:59:02

回答

7

我假設您將需要某種持久性存儲來保存移動,所以替代方案應該是memcache或將數據存儲在文件中。前者閃電般快,但需要在服務器上設置。後者在使用數據庫IMO方面沒有真正的優勢。

任何形式的存儲只發生在用戶的計算機上(例如,將信息存儲在cookie或其他類型的持久存儲中,例如參見herehere)我會發現太不穩定:會話會被破壞如果兩個客戶都不得不重新啓動他們的電腦,這並不是完全不可能發生的。

沒有任何硬數據,mySQL服務器過載這種類型的流量,我會堅持數據庫。否則,請查看memcache

+0

用於memcache的+1;這是一個完美的解決方案。 – Matt 2010-03-20 18:56:40

+0

感謝您的adivce Pekka。對不起,我的低級知識。我對memcache的理解是用於緩存。我怎麼能用我的應用程序?我只是想將玩家的位置傳遞給另一位玩家,而無需存儲在網絡服務器中。我很困惑! :D – Devyn 2010-03-20 19:11:44

+0

@Devyn Memcache是​​一個用於存儲和讀取數據的快速系統。有了它,你仍然可以在「服務器端」存儲這些動作,但是在比數據庫更快的環境中 - 而且不會留下永久記錄。直接將玩家的位置從玩家傳遞給玩家幾乎是不可能的,即使這樣做,如我上面寫的那樣非常不穩定。如果這是您擔心的數據量,則可以在數據庫傳輸到兩個客戶端之後始終刪除最近的數據移動。但我不確定這一切是否合理。是否真的有性能問題? – 2010-03-20 19:21:03

相關問題