由服務(wù)端發(fā)送消息給客戶端的時(shí)候會添加一個(gè)Timer防止客戶端未響應(yīng)該消息,當(dāng)客戶端回復(fù)該消息的時(shí)候會刪除這個(gè)Timer。但是有時(shí)候會存在沒刪除Timer的情況,所以有以下幾個(gè)疑問。 client_id在onConnect以后就常駐在這個(gè)進(jìn)程里不變了嗎? 這個(gè)client_id添加的Timer和這個(gè)client_id是在同一個(gè)進(jìn)程嗎? 頻繁的添加和刪除Timer是導(dǎo)致刪除Timer失敗的原因嗎?...
當(dāng)服務(wù)端不要求客戶端必須回應(yīng)心跳檢測時(shí),假如客戶端遇到掉電等極端情況,這時(shí)服務(wù)端向客戶端發(fā)送的心跳數(shù)據(jù)在TCP層面就會發(fā)送超時(shí),遇到這種超時(shí)情況TCP會重試多次(次數(shù)及間隔依賴操作系統(tǒng)的配置),多次無果后會斷開連接。這種極端情況從連接斷開到服務(wù)端檢測到可能要持續(xù)至少10分鐘才觸發(fā)onClose事件回調(diào)。 可以通過以下的設(shè)置來縮短超時(shí)情況下的斷線嗎? $ vim /etc/sysctl.conf net.ipv...
有幾個(gè)疑問,不知道是不是造成內(nèi)存持續(xù)增長的原因 以下是大致的消息處理流程 在 Events.php 里,每秒發(fā)送數(shù)據(jù)的次數(shù)在3-8次左右,每次發(fā)送的數(shù)據(jù)量不大。 設(shè)備有兩種數(shù)據(jù)處理方式 其中一類處理,頻繁的數(shù)據(jù)轉(zhuǎn)發(fā)到組。 另一類處理,頻繁的操作redis(出隊(duì)入隊(duì))、更新session數(shù)據(jù)。 條件成立時(shí) 創(chuàng)建1-2個(gè)一次性的定時(shí)器,寫入數(shù)據(jù)庫或者發(fā)送郵件 寫數(shù)據(jù)到數(shù)據(jù)庫里 推送數(shù)據(jù)到組中的隨機(jī)一個(gè)用戶 不知道...
2017-11-16 09:17:43 pid:22974 worker exit with status 11 根據(jù)之前的回答。 exit with status 11 是發(fā)生了coredump。 發(fā)生coredump原因一般是兩個(gè) 1、使用了不穩(wěn)定的擴(kuò)展,例如在php7下使用libevent擴(kuò)展(目前l(fā)ibevent擴(kuò)展還沒有穩(wěn)定的php7版本。php7下請使用event擴(kuò)展) 2、php的bug,例如使用了最...
使用GatewayWorker,設(shè)備使用TCP協(xié)議進(jìn)行連接,連接同一端口。 設(shè)備本身一共有 3 種設(shè)備協(xié)議可供選擇 其中兩種設(shè)備協(xié)議發(fā)送的數(shù)據(jù)有不同的開始和結(jié)束標(biāo)記,并且開始結(jié)束標(biāo)記是ASCII控制符。 另外一種設(shè)備協(xié)議發(fā)送的數(shù)據(jù)沒有開始結(jié)束標(biāo)記。 現(xiàn)在設(shè)備傳輸數(shù)據(jù)出現(xiàn)了粘包現(xiàn)象,想到了定制協(xié)議。設(shè)備發(fā)出的數(shù)據(jù)沒辦法進(jìn)行修改。 最開始想到的是text協(xié)議。但是設(shè)備發(fā)出的數(shù)據(jù)沒辦法修改(比如加個(gè) "\n...
使用的是 GatewayWorker 使用場景:用戶打開頁面,頁面就開始向設(shè)備發(fā)送消息,獲取數(shù)據(jù)。 可以以房間號來做定時(shí)器定時(shí)向房間里的人推送消息嗎?因?yàn)槊總€(gè)房間推送的內(nèi)容不一樣。 房間里的人共享這個(gè)定時(shí)器嗎?這樣房間就只需要?jiǎng)?chuàng)建一個(gè)定時(shí)器了,當(dāng)房間沒人的時(shí)候,就可以關(guān)閉這個(gè)定時(shí)器。 感謝各位大大回復(fù)!...
操作步驟: 打開頁面,使用webscoket連接,獲取clientid,將clientid使用ajax發(fā)送到后臺,使用gatewayClient中的setSession設(shè)置session信息。 刷新頁面時(shí),先執(zhí)行了onClose,然后執(zhí)行onConnect,重復(fù) 步驟1。 求助: 在onClose里沒獲取到步驟1里設(shè)置的session值,clientid沒有錯(cuò)誤。 進(jìn)入頁面即步驟1,執(zhí)行了 php start.php...