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影片教學
以上是swoole進程關閉後怎麼重啟的詳細內容。更多資訊請關注PHP中文網其他相關文章!