客戶端訂閱了大量用戶一對(duì)一、一對(duì)多的channel,現(xiàn)想客戶端A能取消客戶端B的訂閱,比如老師端把學(xué)生端的某個(gè)channel退訂,除了發(fā)送“chient-”,能否直接通過(guò)服務(wù)端接口退訂學(xué)生端的某個(gè)channel?...
建議ThinkOrm.php中的定時(shí)器,增加對(duì)配置項(xiàng)“default”限制。 否則,如果設(shè)置'default' => 'mongo',只能注釋掉mysql配置項(xiàng),不然會(huì)報(bào)錯(cuò)。 ======================= 問(wèn)題更新 ========================== think-orm的配置文件如下(代碼二)所示,數(shù)據(jù)庫(kù)默認(rèn)采用mongo,此時(shí),并未使用到mysql,所以mysql的配置項(xiàng)不...
1、添加能查詢匹配所有channel,場(chǎng)景適用于群發(fā),如訂閱了private-group-uid,可通過(guò)查詢group,匹配到所有訂閱者。即:$push->getChannelInfo('-group-', ['info' => 'channels']) 參考代碼添加到711行: case 'channels': //獲取所有匹配包含的渠道號(hào) $channels = isset($this->_g...
server.php中多處JSON_UNESCAPED_UNICODE寫(xiě)在json_encode括號(hào)外,希望修復(fù)下 例如: $connection->send(json_encode($user_id_array), JSON_UNESCAPED_UNICODE);...
自從學(xué)了workerman,才知道多進(jìn)程這么麻煩。 真實(shí)佩服會(huì)玩線程纖程的人。 用了多線程,以為同一個(gè)進(jìn)程里代碼隨便寫(xiě),結(jié)果多個(gè)進(jìn)程搶一個(gè)redis,數(shù)據(jù)還沒(méi)修改呢就被其他進(jìn)程讀取了。 好吧,百度一把,加鎖,然后各種加鎖,無(wú)效。。。然后各種測(cè)試,發(fā)現(xiàn)只開(kāi)一個(gè)進(jìn)程沒(méi)問(wèn)題,然后知道了redis原子性的概念。 哎,不先解決redis原子性,加一萬(wàn)把鎖都沒(méi)用,真是頭發(fā)掉了無(wú)數(shù)根。 最后放一個(gè)鏈接,希望能幫到跟我一樣為多線程爭(zhēng)...
圖1:A進(jìn)程count=5,循環(huán)7次AsyncTcpConnection執(zhí)行B進(jìn)程,在第6次的時(shí)候,redis報(bào)錯(cuò),提示redis連接失敗。 圖2:另外,在循環(huán)7次過(guò)程中,通過(guò)use()傳遞給$connection->onMessage()的變量$key,會(huì)因?yàn)槎噙M(jìn)程的原因,導(dǎo)致不是foreach按順序循環(huán)的傳遞的$key值嗎? ...
進(jìn)程A和B都設(shè)置了5個(gè)子進(jìn)程,進(jìn)程A里放了一個(gè)定時(shí)器,同一時(shí)間去redis中查詢5條數(shù)據(jù)并立刻批量刪除,然后調(diào)用AsyncTcpConnection執(zhí)行進(jìn)程B,redis是用的zset類型。 問(wèn)題: 1、redis雖然是單進(jìn)程,但是因?yàn)?個(gè)定時(shí)器同時(shí)執(zhí)行了進(jìn)程A,導(dǎo)致redis還沒(méi)刪除之前,就被其他子進(jìn)程也查詢到了值,導(dǎo)致進(jìn)程A有幾率會(huì)執(zhí)行2~3次,但我只想讓進(jìn)程A執(zhí)行一次。我知道可以設(shè)置$worker->id...
答:AsyncTcpConnection可以嵌套,只是因?yàn)锳syncTcpConnection是異步的,我在繁忙任務(wù)沒(méi)執(zhí)行完畢之前就把AsyncTcpConnection斷開(kāi)了,所以收不到回調(diào)。解決辦法是,讓進(jìn)程B決定什么時(shí)候斷開(kāi)AsyncTcpConnection。 通過(guò)websocket進(jìn)程A,調(diào)用AsyncTcpConnection執(zhí)行繁忙任務(wù)進(jìn)程B,再在進(jìn)程B中通過(guò)AsyncTcpConnection連接sm...