我們假設我正在開發一個AJAX,PHP國際象棋遊戲。 在比賽期間,玩家的一次動作會通知另一名玩家,但我們並未保存該信息。通常情況下,我們以前每次玩家進行移動並將更新位置顯示給其他玩家時,都會在MySQL中存儲。 我想要的是儘可能減少MySQL負載,服務器對兩個玩家之間的移動不感興趣。服務器將只保存最終結果,比如誰勝出。 那我該怎麼辦?使用PHP和AJAX,兩個客戶端可以在沒有MySQL的情況下交換數據嗎?
回答
我假設您將需要某種持久性存儲來保存移動,所以替代方案應該是memcache或將數據存儲在文件中。前者閃電般快,但需要在服務器上設置。後者在使用數據庫IMO方面沒有真正的優勢。
任何形式的存儲只發生在用戶的計算機上(例如,將信息存儲在cookie或其他類型的持久存儲中,例如參見here或here)我會發現太不穩定:會話會被破壞如果兩個客戶都不得不重新啓動他們的電腦,這並不是完全不可能發生的。
沒有任何硬數據,mySQL服務器過載這種類型的流量,我會堅持數據庫。否則,請查看memcache。
用於memcache的+1;這是一個完美的解決方案。 – Matt 2010-03-20 18:56:40
感謝您的adivce Pekka。對不起,我的低級知識。我對memcache的理解是用於緩存。我怎麼能用我的應用程序?我只是想將玩家的位置傳遞給另一位玩家,而無需存儲在網絡服務器中。我很困惑! :D – Devyn 2010-03-20 19:11:44
@Devyn Memcache是一個用於存儲和讀取數據的快速系統。有了它,你仍然可以在「服務器端」存儲這些動作,但是在比數據庫更快的環境中 - 而且不會留下永久記錄。直接將玩家的位置從玩家傳遞給玩家幾乎是不可能的,即使這樣做,如我上面寫的那樣非常不穩定。如果這是您擔心的數據量,則可以在數據庫傳輸到兩個客戶端之後始終刪除最近的數據移動。但我不確定這一切是否合理。是否真的有性能問題? – 2010-03-20 19:21:03
- 1. 我可以在沒有oracle客戶端的情況下使用C#連接嗎?
- 2. 我可以在沒有用戶的情況下使用oauth2嗎?
- 3. Windows驅動程序可以在沒有客戶端的情況下運行嗎?
- 4. 函數可以在沒有類的情況下調用嗎? php
- 5. 在沒有客戶端SDK的情況下使用GCM/Firebase
- 6. 在沒有客戶端嵌入html的情況下使用socket.io
- 7. 我們可以在沒有服務器和客戶端的情況下添加MySQL索引嗎?
- 8. 我可以在沒有瀏覽器的情況下使用AJAX和JavaScript嗎?
- 9. 如何在沒有IIS的情況下使用AJAX Control Toolkit客戶端功能
- 10. 有沒有一個好的CAS客戶端,我可以在沒有網絡平臺的情況下使用?
- 11. 這可以在沒有同步AJAX的情況下完成嗎?
- 12. php可以在沒有用戶交互的情況下啓動腳本以便與數據庫交互?
- 13. 在沒有用戶交互的情況下更改iPhone音量,可以嗎?
- 14. 多個客戶端在沒有服務器的情況下查詢數據
- 15. PHP會話可以在沒有Cookie的情況下工作嗎?
- 16. 我可以在沒有Node.js的情況下使用Tumblr.js嗎?
- 17. 可以在沒有列表的情況下使用LOAD TABLE嗎?
- 18. 可以在沒有相機的情況下使用Vuforia嗎?
- 19. AngularJS可以在沒有REST API的情況下使用嗎?
- 20. aws - 我可以在沒有S3的情況下使用EC2嗎?
- 21. Vala可以在沒有GObject的情況下使用嗎?
- 22. jInterface可以在沒有節點的情況下使用嗎?
- 23. 可以在沒有命令行的情況下使用Singularity.gs嗎?
- 24. 你可以在沒有Bootstrap的情況下使用Jinja嗎?
- 25. PowerMock可以在沒有註釋的情況下使用嗎?
- 26. 我可以在沒有Eclipse的情況下使用BIRT嗎?
- 27. 我可以在沒有CALayers的情況下使用Core Animation嗎?
- 28. 我可以在沒有Zend_Application的情況下使用zfdebug嗎?
- 29. 我可以在沒有SharePoint的情況下使用K2 Blackpearl嗎?
- 30. LABEL塊可以在沒有循環的情況下使用嗎?
如果服務器沒有跟蹤碎片的移動和位置,是不是可以作弊? – 2010-03-20 18:51:56
@安迪如果只是人與人的比賽,那麼很難 - 兩個客戶都會保留完整的歷史記錄並進行比較。如果是人與系統,那麼,我的徽章在十秒內在哪裏呢? :) – 2010-03-20 18:59:02