源代碼里是看到有CMD_BATCH_GET_CLIENT_ID_BY_UID,但是沒有找到對(duì)應(yīng)的調(diào)用方法,問下,是沒提供這個(gè)方法嗎?如果要批量獲取用戶是否在線,該怎么辦...
架構(gòu)是gatewayworker + webman,bussiness進(jìn)程放在webman里。邏輯是連接websocket的時(shí)候帶上token,在onconnect事件根據(jù)token讀取用戶id,然后保存到session里,onmessage讀取session里的用戶id判斷用戶身份。本地websocket測(cè)試的時(shí)候 發(fā)送的第一個(gè)消息能獲取到session,第二個(gè)和第三個(gè)獲取不到,加上usleep后就可以了,或者連...
因?yàn)槟承┰?,每次改了代碼,希望用restart,而不是用reload,所以使用了阿里云的alb作為負(fù)載均衡,alb支持優(yōu)雅中斷功能,就是后端服務(wù)出現(xiàn)異常,暫時(shí)不會(huì)中斷與客戶端的連接,但是剛才試了下,restart后,客戶端立馬中斷了連接,是不是restart會(huì)主動(dòng)關(guān)閉所有已連接的客戶端...
onmessage是一條消息一條消息處理的?哪怕第一條消息涉及到網(wǎng)絡(luò)操作,也要等第一條消息執(zhí)行完畢,第二條消息才會(huì)執(zhí)行? 輸出 連著發(fā)送 ...
用的webman+GatewayWork,因?yàn)榇a需要保存一些變量,用了context的,http下沒有問題,但是用websocket發(fā)現(xiàn),不同的message事件,獲取的context里的值是一樣的,要怎么改才能針對(duì)每個(gè)message...
webman使用gateway-worker插件,bussiness配置name不起作用,bussiness中異常無法通過config/exception.php配置的類捕獲 進(jìn)程名字還是 plugin.webman.gateway-worker.worker bussiness進(jìn)程中的業(yè)務(wù)代碼異常不能被config/exception.php...
問題描述 這里詳細(xì)描述問題 程序代碼 $options = [ 'max_conn_per_addr' => 1000, // 每個(gè)域名最多維持多少并發(fā)連接 'keepalive_timeout' => 30, // 連接多長(zhǎng)時(shí)間不通訊就關(guān)閉 'connect_timeout' => 30, // 連接超時(shí)時(shí)間 ...
因?yàn)橛幸恍?shù)據(jù)是跟請(qǐng)求綁定的,如果用傳統(tǒng)的fpm,可以用靜態(tài)類,繼承父類來實(shí)現(xiàn),協(xié)程可以用上下文來實(shí)現(xiàn),但是webman就不知道怎么實(shí)現(xiàn)了...
現(xiàn)在是有個(gè)需求,需要某個(gè)中間件執(zhí)行完畢后,再去刪除一個(gè)鎖,這個(gè)鎖是加在某個(gè)用戶上的...
在業(yè)務(wù)代碼里寫了sleep(10),請(qǐng)求后,看到瀏覽器是一直在轉(zhuǎn)。然后修改代碼,保存,webman會(huì)自動(dòng)reload,可以看到請(qǐng)求立馬結(jié)束了,沒有在轉(zhuǎn)了,這是不是說明reload后,原來的請(qǐng)求被暫停了?...
在控制器中,獲取當(dāng)前請(qǐng)求的id,每次都是1,就算在同一個(gè)進(jìn)程里也是1,workerman文檔中不是寫了,這個(gè)id會(huì)自增 嗎 print_r($request ->connection ->id );...
為了方便,每次從數(shù)據(jù)庫中查到得數(shù)據(jù),都會(huì)存放在一個(gè)類得變量里,因?yàn)槭怯螒蛐袠I(yè),所有得數(shù)據(jù)都是根據(jù)用戶id查得,放在類得緩存里,這樣業(yè)務(wù)復(fù)雜,不同得函數(shù)里都調(diào)方法查詢數(shù)據(jù)時(shí),不用每次查數(shù)據(jù)。但是這樣一來,這個(gè)類就會(huì)占據(jù)很大得內(nèi)存,目前想得是,請(qǐng)求結(jié)束后,就把當(dāng)前請(qǐng)求設(shè)置得變量?jī)?nèi)容清除掉,不知道用什么方法...
1、bussiness 開了8個(gè)進(jìn)程,一臺(tái)設(shè)備連接上后,發(fā)送了10多次消息,發(fā)現(xiàn)每次都是同一個(gè)進(jìn)程在處理,這是因?yàn)檎萌绱诉€是workerman固定了一個(gè)連接建立后,后續(xù)消息都是同一個(gè)進(jìn)程在處理 2、Gatewayworkderman分離部署,Gateway,bussiness 都可以部署多臺(tái),register能部署多臺(tái)嗎?如果部署多臺(tái),是不是會(huì)把Gateway bussiness 分割成多個(gè)集群...
目前公司考慮上k8s,沒有運(yùn)維,開發(fā)去部署。目前我想到的上k8s的話,有以下問題 單臺(tái)機(jī)器 pod不固定,workerman進(jìn)程數(shù)量沒辦法設(shè)置 如果把代碼放入鏡像中,每次修改代碼后需要更新鏡像,這樣應(yīng)該是不能做到平滑重啟...
Trying to access array offset on value of type bool in file /var/www/workerman_gateway/vendor/workerman/workerman/Worker.php on line 770 項(xiàng)目運(yùn)行在docker中,代碼報(bào)錯(cuò)的地方是 $user_info = \posix_getpwuid(\posix_getuid()); ...
在onmessage里,直接 self::$globaldata_worker ->increment( 'process_cnt', 1 ); 發(fā)現(xiàn)最后process_cnt這個(gè)值有問題,取出來的值是null,貌似需要初始化為0才行,但是這個(gè)初始化不知道在什么時(shí)候進(jìn)行...
gateway的bussinesswork中onmessage獲得message是請(qǐng)求頭,而不是客戶端發(fā)送的信息 客戶端 for( $i = 0;$i<=1;$i++ ){ $con = new AsyncTcpConnection('ws://x.x.x.x:8282'); $con ->onError = function(AsyncTcpConnection $con...
考慮到一個(gè)場(chǎng)景,當(dāng)前有10萬臺(tái)設(shè)備連接,如果因?yàn)榇a或者服務(wù)器原因,所有設(shè)備斷開了連接,下次重啟后,所有設(shè)備都會(huì)同時(shí)連上,因?yàn)檫B上后有些數(shù)據(jù)庫和redis的操作,服務(wù)器完全抗不住。所以我想,如果一個(gè)gateway,同時(shí)有1000個(gè)正在發(fā)起連接,但是數(shù)據(jù)庫和redis工作還沒做完,后面設(shè)備發(fā)起連接時(shí),直接拒絕這個(gè)請(qǐng)求。bussiness進(jìn)程在處理完連接事件后,告訴gateway,gateway 就講總的正在連接設(shè)備減1...