首頁 >php框架 >Swoole >swoole進程關閉後怎麼重啟

swoole進程關閉後怎麼重啟

尚
原創
2019-12-16 09:32:432919瀏覽

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影片教學

以上是swoole進程關閉後怎麼重啟的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn