應(yīng)用場景:
我采用websocket的方法連接對方的服務(wù),對方的服務(wù)是以用戶登錄的方式連接。即我每多一個connection都是一個普通的用戶登錄連接狀態(tài)。由于網(wǎng)絡(luò)的問題或者對方服務(wù)器鑒權(quán)問題,我每隔4小時把所有的用戶連接斷開$con->close()方法,然后通過onClose事件等待10秒重新連接。
出現(xiàn)的問題:
每個用戶connection我都做了一個timer監(jiān)聽它與對方服務(wù)器的連接狀態(tài),而且我也在connection設(shè)置單獨(dú)的屬性。過了一段時間~通常會1天以上~會出現(xiàn)connection消失,我是通過server.php status 查看當(dāng)前整個服務(wù)的狀態(tài),發(fā)現(xiàn)connection全部沒有了。但是每個connection timer監(jiān)聽還在,但是已經(jīng)無法獲取之前的屬性等等一些列數(shù)據(jù)了。
worker_name為none的用戶連接會消失。比如現(xiàn)在是2個用戶~過段時間就會丟失2個變?yōu)?。 請問這是什么原因??我查找了很久很久了,也不知道如何下手查找了?請求幫助!
我現(xiàn)在是這樣測試的~我手動通過$con->close()斷開連接,它會自動觸發(fā)onClose事件,但是我這個時候不重連它(不使用$con->reConnect()方法), 我status看了connection并沒有減少數(shù)量。 我接下來應(yīng)該如何排查?
connections 表示當(dāng)前未斷開的連接數(shù),如果某個連接斷開了,連接對象銷毀了,connections就相應(yīng)減1。
如果connections為0,說明連接都斷開了。至于定時器還在,是因為斷開連接后沒刪除定時器,連接和定時器是2個不同的東西,連接斷開了定時器還是一直存在的。你應(yīng)該在連接onclose的時候刪除定時器。
謝謝你的解答。 我現(xiàn)在是這樣測試的~我手動通過$con->close()斷開連接,它會自動觸發(fā)onClose事件,但是我這個時候不重連它, 我status看了connection并沒有減少數(shù)量。 我接下來應(yīng)該如何排查?