大佬们 请教个问题,我用的webman+gateway
现在是涉及到一个更新控制器代码 gateway的tcp链接掉线的问题, 一更新代码 进程重启,tcp客户端硬件就掉线了,然后有时候服务器或TCP客户端都显示链接成功,但是无法通讯。
目前是因为我要开着tcp和硬件进行开发,每次一更新代码以后,都要stop一下 然后等5-10秒再start一下。
如果是debug模式下,就要先停止,然后等5-10秒再start一下。
求救 求救 求救
debug模式还是正常模式都测试过,掉线是偶然现象,但是频率很高。
我修改的代码是app/控制器下的代码 非plugin/Events.php
请问应该如何实现 更新app/控制器下的代码 能实现热更新,但gateway不重启进程的方法(或tcp不掉线的方法(注:无法更改硬件,只能从server下手)),感谢各位大佬。
代码更新,gateway进程不会重启。
php start.php status
能看到哪些进程有重启过大佬 这个是又开了四个进程,还是重启的进程? 我本地ide修改文件保存的时候,文件上传,他就提示进程启动了,这个进程启动的echo是我写到eve.php的onWorkerStart里面的
看不懂你表达的意思
就是我本地ide更新保存的时候,配置了自动上传到服务器,然后服务器那边就自动update and reload了。然后我这边的eve.php 就又执行了onWorkerStart。导致我的tcp客户端掉线了。。。
要更新代码businessWorker必须要重启的,gateway不会重启,所以客户端不会掉线,如果掉线了可能是你event.php里做了什么业务逻辑。或者gateway进程没设置 reloadable为false
看下
gateway进程是否设置了reloadable为false。
要载入新的业务代码,businessWorker必须要重启,event.php必须要重新载入执行
老大感谢,这个地方是默认的false 没有改过,刚看了一下 是false。但是确实是连接不上了,刚刚我又确认了一下,然后-d还是debug模式下 PID没有变,然后设备掉线了,events.php没有什么业务逻辑,只是把客户端绑定了个uid,然后每次接收到的数据都转到控制器进行业务处理了。
gateway没重启,那就不是gateway导致的。
业务有个报错解决下,应该是某个进程执行不到Events::onMessage,可能是DiyWorker,把没用的进程去掉吧。
想下设备以及服务端是否有进入某个条件就断开连接的逻辑。本地没环境,其它的帮不上忙了