2016-07-23 114 views
0

我正在開發一個隨機聊天應用程序,它將客戶端與另一個「隨機」客戶端相匹配。僞隨機,因爲客戶端將查詢「打開」客戶端列表並從列表頂部進行選擇。1對1隨機匹配

我已經搜索了一個答案,但似乎沒有資源存在於基於關係數據庫的mySQL中的配對解決方案。我遇到的問題是,如果所有客戶端都設置爲「搜索」,則每個(用戶)嘗試連接到一個(a),而一個(a)嘗試連接到另一個(b)。 {*用戶正在追逐一會兒同時追逐b}

當兩個客戶端都處於不匹配客戶端池時,連接兩個隨機客戶端以交換信息的最簡單結構和過程是什麼?

回答

1

我不確定你正在尋找什麼,但也許並非讓每個客戶主動尋找另一個連接到數據庫,你可以讓所有的客戶都進入匹配池。然後在服務器上運行一個單獨的進程將檢查數據庫並根據您希望的任何標準匹配人員,並將其從「搜索」表中刪除。這將確保人們不能與多人同時匹配。

我希望這在概念上有所幫助。

+0

是的,這絕對是一個難題,你將如何設置一個PHP腳本來不斷檢查數據庫中的池,並充當主持人來分配每個用戶?這是我無法擺脫困境的一部分。 –

+0

我最近做了類似的事情。您可以使用一個帶有無限循環的腳本,輪詢數據庫以搜索用戶,以及何時找到兩個腳本,它會從搜索表中刪除這些條目並將連接信息發送給每個客戶端。如果腳本在搜索表中找不到任何內容,它將「睡眠(1)」,然後重複。當然,PHP並不是長時間運行流程的最佳語言,但如果使用像Supervisord這樣的流程管理器來確保腳本在崩潰時保持運行,那麼這是一個體面的解決方案。 – JrBaconCheez