swoole進程關閉后怎么重啟

swoole進程關閉后怎么重啟

swoole進程關閉后可以使用Server->reload方法重啟。

Server->reload方法介紹:

重啟所有worker/task進程。

bool?Server->reload(bool?$only_reload_taskworkrer?=?false)

$only_reload_taskworkrer?是否僅重啟Task進程

一臺繁忙的后端服務器隨時都在處理請求,如果管理員通過kill進程方式來終止/重啟服務器程序,可能導致剛好代碼執行到一半終止。

這種情況下會產生數據的不一致。如交易系統中,支付邏輯的下一段是發貨,假設在支付邏輯之后進程被終止了。會導致用戶支付了貨幣,但并沒有發貨,后果非常嚴重。

swoole提供了柔性終止/重啟的機制,管理員只需要向Server發送特定的信號,Server的Worker進程可以安全的結束。

1、SIGTERM: 向主進程/管理進程發送此信號服務器將安全終止

2、在php代碼中可以調用$serv->shutdown()完成此操作

3、SIGUSR1: 向主進程/管理進程發送SIGUSR1信號,將平穩地restart所有Worker進程

4、在PHP代碼中可以調用$serv->reload()完成此操作

5、reload有保護機制,當一次reload正在進行時,收到新的重啟信號會丟棄

6、如果設置了user/group,Worker進程可能沒有權限向master進程發送信息,這種情況下必須使用root賬戶,在shell中執行kill指令進行重啟

7、reload指令對addProcess添加的用戶進程無效

推薦學習:swoole視頻教程

以上就是

? 版權聲明
THE END
喜歡就支持一下吧
點贊7 分享