大佬們 請教個(gè)問題,我用的webman+gateway
現(xiàn)在是涉及到一個(gè)更新控制器代碼 gateway的tcp鏈接掉線的問題, 一更新代碼 進(jìn)程重啟,tcp客戶端硬件就掉線了,然后有時(shí)候服務(wù)器或TCP客戶端都顯示鏈接成功,但是無法通訊。
目前是因?yàn)槲乙_著tcp和硬件進(jìn)行開發(fā),每次一更新代碼以后,都要stop一下 然后等5-10秒再start一下。
如果是debug模式下,就要先停止,然后等5-10秒再start一下。
求救 求救 求救
debug模式還是正常模式都測試過,掉線是偶然現(xiàn)象,但是頻率很高。
我修改的代碼是app/控制器下的代碼 非plugin/Events.php
請問應(yīng)該如何實(shí)現(xiàn) 更新app/控制器下的代碼 能實(shí)現(xiàn)熱更新,但gateway不重啟進(jìn)程的方法(或tcp不掉線的方法(注:無法更改硬件,只能從server下手)),感謝各位大佬。
代碼更新,gateway進(jìn)程不會(huì)重啟。
php start.php status
能看到哪些進(jìn)程有重啟過
大佬 這個(gè)是又開了四個(gè)進(jìn)程,還是重啟的進(jìn)程? 我本地ide修改文件保存的時(shí)候,文件上傳,他就提示進(jìn)程啟動(dòng)了,這個(gè)進(jìn)程啟動(dòng)的echo是我寫到eve.php的onWorkerStart里面的
就是我本地ide更新保存的時(shí)候,配置了自動(dòng)上傳到服務(wù)器,然后服務(wù)器那邊就自動(dòng)update and reload了。然后我這邊的eve.php 就又執(zhí)行了onWorkerStart。導(dǎo)致我的tcp客戶端掉線了。。。
要更新代碼businessWorker必須要重啟的,gateway不會(huì)重啟,所以客戶端不會(huì)掉線,如果掉線了可能是你event.php里做了什么業(yè)務(wù)邏輯?;蛘遟ateway進(jìn)程沒設(shè)置 reloadable為false
看下
gateway進(jìn)程是否設(shè)置了reloadable為false。
要載入新的業(yè)務(wù)代碼,businessWorker必須要重啟,event.php必須要重新載入執(zhí)行
老大感謝,這個(gè)地方是默認(rèn)的false 沒有改過,剛看了一下 是false。但是確實(shí)是連接不上了,剛剛我又確認(rèn)了一下,然后-d還是debug模式下 PID沒有變,然后設(shè)備掉線了,events.php沒有什么業(yè)務(wù)邏輯,只是把客戶端綁定了個(gè)uid,然后每次接收到的數(shù)據(jù)都轉(zhuǎn)到控制器進(jìn)行業(yè)務(wù)處理了。
gateway沒重啟,那就不是gateway導(dǎo)致的。
業(yè)務(wù)有個(gè)報(bào)錯(cuò)解決下,應(yīng)該是某個(gè)進(jìn)程執(zhí)行不到Events::onMessage,可能是DiyWorker,把沒用的進(jìn)程去掉吧。
想下設(shè)備以及服務(wù)端是否有進(jìn)入某個(gè)條件就斷開連接的邏輯。本地沒環(huán)境,其它的幫不上忙了