类别:Swoole / 日期:2019-12-08 / 浏览:198 / 评论:0

在swoole中,我们能够向主历程发送种种差别的信号,主历程依据接收到的信号范例做出差别的处置惩罚。

比方下面这几个 (引荐进修: swoole视频教程)

1、kill -SIGTERM|-15 master_pid  停止Swoole顺序,一种文雅的停止信号,会待历程实行完当前顺序以后中断,而不是直接干掉历程
2、kill -USR1|-10  master_pid  重启一切的Worker历程
3、kill -USR2|-12  master_pid  重启一切的Task Worker历程

当USR1信号被发送给Master历程后,Master历程会将一样的信号经由过程Manager历程转发Worker历程,收到此信号的Worker历程会在处置惩罚完正在实行的逻辑以后,开释历程内存,封闭本身,然后由Manager历程重启一个新的Worker历程。

新的Worker历程会占用新的内存空间。

场景:

假如是上线的项目,一台忙碌的后端服务器随时都在处置惩罚要求,假如管理员经由过程kill历程体式格局来停止/重启服务器顺序,大概致使恰好代码实行到一半停止。

这类情况下会发生数据的不一致。

如交易系统中,付出逻辑的下一段是发货,假设在付出逻辑以后历程被停止了。会致使用户付出了钱银,但并没有发货,效果异常严峻。

swoole为我们供应了腻滑重启机制,我们只须要向swoole_server的主历程发送特定的信号,即可完成对server的重启。

注意事项:

1、更新仅仅只是针对worker历程,在worker 历程当中include 也就是写在master历程跟manger历程当中更新代码并不见效,也就是说只要在onWorkerStart回调以后加载的文件,重启才有意义。

在Worker历程启动之前就已加载到内存中的文件,假如想让它从新见效,只能封闭server再重启。

2、直接写在worker代码当中的逻辑是不会见效的,就算发送了信号也不会,须要经由过程include体式格局引入相干的营业逻辑代码才会见效

以上就是swoole怎样重启的细致内容,更多请关注ki4网别的相干文章!

打赏

感谢您的赞助~

打开支付宝扫一扫,即可进行扫码打赏哦~

版权声明 : 本文未使用任何知识共享协议授权,您可以任何形式自由转载或使用。

 可能感兴趣的文章