Server->stop
使當前Worker進程停止運行,并立即觸發onWorkerStop回調函數。
function?Server->stop(int?$worker_id?=?-1,?bool?$waitEvent?=?false);
使用此函數代替exit/die結束Worker進程的生命周期
$waitEvent可以控制退出策略,默認為false表示立即退出,設置為true表示等待事件循環為空時再退出
如果要結束其他Worker進程,可以在stop里面加上worker_id作為參數或者使用swoole_process::kill($worker_pid)
此方法在1.8.2或更高版本可用$waitEvent在1.9.19或更高版本可用
異步退出
異步服務器在調用stop退出進程時,可能仍然有事件在等待。比如使用了swooleMySQL->query,發送了SQL語句,但還在等待MySQL服務器返回結果。這時如果進程強制退出,SQL的執行結果就會丟失了。
設置$waitEvent = true后,底層會使用異步安全重啟策略。先通知Manager進程,重新啟動一個新的Worker來處理新的請求。當前舊的Worker會等待事件,直到事件循環為空或者超過max_wait_time后,退出進程,最大限度的保證異步事件的安全性。
推薦學習:?swoole教程
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END
喜歡就支持一下吧
相關推薦