簡體   English   中英

服務器到客戶端的PHP連接

[英]server to client connection with PHP

所以我的問題是:通過PHP建立服務器-客戶端連接的最佳方法是什么? 我的第一種方法(我現在正在使用的方法)是使用AJAX。 (使用jQuery)

更具體一點:我有一個大廳和一個游戲模式,我的首要任務是聊天和游戲中的用戶。

我現在正在做什么:我有一個PHP文件,該文件為游戲中的每個用戶更新數據庫中的一條記錄,而另一個文件則定期對此進行檢查。 (比方說,每隔5秒一次)出現的問題是,有很多mysql調用,許多ajax調用,有時當ajax無法及時加載時,記錄不會及時更新,因此->用戶斷開連接。

請注意,在我的論文中我需要這樣做,因此即使您給我一些鏈接,我也有時間對此做功課。

歡迎任何答案和提示! 提前致謝。

您可以通過設置AJAX調用的時間限制開始,並通過仔細檢查來處理任何錯誤,而不僅僅是斷開用戶連接。

實際上,每五秒鍾打一次電話並不算多。

您可以查看Comet ,它使用“長時間輪詢”來保持連接打開,從而允許進行通信而無需輪詢。

問題在於這需要服務器上更多的資源,因為它可能必須同時保持大量連接的打開。 如果您在具有多台服務器的托管服務器上,則狀態管理可能會變得令人頭疼,因為您需要將用戶限制在單個IP /服務器上,或者需要跨服務器管理狀態。 您正在用一套資源換另一套資源。

您可能要考慮的一項問題(除了Coment之外)是將數據庫內存保留在REDISMEMCACHED上,以大大提高數據庫性能。

一種替代方法是使用共享內存-PHP:Semaphore,Shared Memory和IPC
潛在的問題可能是系統對共享內存的限制。 另外,由於必須確保防止共享資源同時讀取/寫入,因此訪問共享資源可能會變得復雜。 但是,這應該比使用數據庫更快。 數據可以每分鍾或每半分鍾刷新一次到數據庫。

如果游戲模式每秒需要大量請求/響應,那么創建一個單獨的程序來處理游戲邏輯將是一個更好的解決方案,而不是使用PHP。
另一種選擇是使游戲具有狀態(如果可能)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM