类别: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网别的相干文章!