這篇文章將為大家詳細講解有關swoole進程關閉后如何重啟,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
我們提供的服務有:成都網(wǎng)站設計、做網(wǎng)站、成都外貿(mào)網(wǎng)站建設公司、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、濱州ssl等。為上1000家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的濱州網(wǎng)站制作公司
swoole進程關閉后可以使用Server->reload方法重啟。
Server->reload方法介紹:
重啟所有Worker/Task進程。
bool Server->reload(bool $only_reload_taskworkrer = false)
$only_reload_taskworkrer 是否僅重啟Task進程
一臺繁忙的后端服務器隨時都在處理請求,如果管理員通過kill進程方式來終止/重啟服務器程序,可能導致剛好代碼執(zhí)行到一半終止。
這種情況下會產(chǎn)生數(shù)據(jù)的不一致。如交易系統(tǒng)中,支付邏輯的下一段是發(fā)貨,假設在支付邏輯之后進程被終止了。會導致用戶支付了貨幣,但并沒有發(fā)貨,后果非常嚴重。
Swoole提供了柔性終止/重啟的機制,管理員只需要向Server發(fā)送特定的信號,Server的Worker進程可以安全的結束。
1、SIGTERM: 向主進程/管理進程發(fā)送此信號服務器將安全終止
2、在PHP代碼中可以調(diào)用$serv->shutdown()完成此操作
3、SIGUSR1: 向主進程/管理進程發(fā)送SIGUSR1信號,將平穩(wěn)地restart所有Worker進程
4、在PHP代碼中可以調(diào)用$serv->reload()完成此操作
5、reload有保護機制,當一次reload正在進行時,收到新的重啟信號會丟棄
6、如果設置了user/group,Worker進程可能沒有權限向master進程發(fā)送信息,這種情況下必須使用root賬戶,在shell中執(zhí)行kill指令進行重啟
7、reload指令對addProcess添加的用戶進程無效
關于“swoole進程關閉后如何重啟”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。