workerman的reload命令

7csn

看workerman的源码,感觉reload,并不像nginx之类,会重载配置文件,而是对设置为可重载的子进程,调用其工作实例的重载回调方法,然后关闭它,再创建一个新的同类子进程。
感觉reload命令,目的仅仅为了调用部分工作实例的onWorkerReload方法?

3956 1 0
1个回答

walkor

workerman本身没有配置文件。所以workerman本身没有reload重新载入配置文件的说法。
workerman reload 默认是将子进程一个一个重启。
 
当然你可以设置reloadable=false,然后在onWorkerReload里重新载入业务配置,实现不重启进程载入新的业务配置。

  • 7csn 2019-08-29

    有个问题想不明白,static::forkWorkers() 之前 static::resetStd() 不好吗?最先一批子进程创建时还需要 static::resetStd(),后续重启的子进程也没有 static::resetStd() 啊。另外,积分负了,好多操作受限,怎么涨积分呢?

  • walkor 2019-08-30

    启动的时候static::resetStd()尽量后面执行可以将启动时的报错展示在终端,方便看到报错。
    父进程static::resetStd()后,子进程不需要再static::resetStd()了,会继承父进程static::resetStd()的结果。
    在社区只提问,不回复会扣积分。不要只做寻求帮助者,多帮助社区里其它人回复问题可以增加积分。

  • 7csn 2019-08-31

    好的,谢谢。

  • hk2018 2020-03-06

    在一个进程还在忙的时候,reload平滑重启,这个忙的进程为什么不会被信号打断呢,没看到用pcntl_sigprocmask 把信号阻塞住的代码呀

  • dignfei 2020-03-14

    @5821: 我也疑惑这个,怎么控制不会打断正在运算中的连接?

年代过于久远,无法发表回答
🔝