看workerman的源码,感觉reload,并不像nginx之类,会重载配置文件,而是对设置为可重载的子进程,调用其工作实例的重载回调方法,然后关闭它,再创建一个新的同类子进程。 感觉reload命令,目的仅仅为了调用部分工作实例的onWorkerReload方法?
workerman本身没有配置文件。所以workerman本身没有reload重新载入配置文件的说法。 workerman reload 默认是将子进程一个一个重启。 当然你可以设置reloadable=false,然后在onWorkerReload里重新载入业务配置,实现不重启进程载入新的业务配置。
有个问题想不明白,static::forkWorkers() 之前 static::resetStd() 不好吗?最先一批子进程创建时还需要 static::resetStd(),后续重启的子进程也没有 static::resetStd() 啊。另外,积分负了,好多操作受限,怎么涨积分呢?
启动的时候static::resetStd()尽量后面执行可以将启动时的报错展示在终端,方便看到报错。 父进程static::resetStd()后,子进程不需要再static::resetStd()了,会继承父进程static::resetStd()的结果。 在社区只提问,不回复会扣积分。不要只做寻求帮助者,多帮助社区里其它人回复问题可以增加积分。
好的,谢谢。
在一个进程还在忙的时候,reload平滑重启,这个忙的进程为什么不会被信号打断呢,没看到用pcntl_sigprocmask 把信号阻塞住的代码呀
@5821: 我也疑惑这个,怎么控制不会打断正在运算中的连接?
workerman本身没有配置文件。所以workerman本身没有reload重新载入配置文件的说法。
workerman reload 默认是将子进程一个一个重启。
当然你可以设置reloadable=false,然后在onWorkerReload里重新载入业务配置,实现不重启进程载入新的业务配置。
有个问题想不明白,static::forkWorkers() 之前 static::resetStd() 不好吗?最先一批子进程创建时还需要 static::resetStd(),后续重启的子进程也没有 static::resetStd() 啊。另外,积分负了,好多操作受限,怎么涨积分呢?
启动的时候static::resetStd()尽量后面执行可以将启动时的报错展示在终端,方便看到报错。
父进程static::resetStd()后,子进程不需要再static::resetStd()了,会继承父进程static::resetStd()的结果。
在社区只提问,不回复会扣积分。不要只做寻求帮助者,多帮助社区里其它人回复问题可以增加积分。
好的,谢谢。
在一个进程还在忙的时候,reload平滑重启,这个忙的进程为什么不会被信号打断呢,没看到用pcntl_sigprocmask 把信号阻塞住的代码呀
@5821: 我也疑惑这个,怎么控制不会打断正在运算中的连接?