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退出進程時,可能仍有事件在等待。例如使用了Swoole\MySQL->query,發送了SQL語句,但還在等待MySQL伺服器回傳結果。這時如果行程強制退出,SQL的執行結果就會遺失了。 設定$waitEvent = true後,底層會使用非同步安全性重新啟動策略。先通知Manager進程,重新啟動一個新的Worker來處理新的請求。目前舊的Worker會等待事件,直到事件循環為空或超過max_wait_time後,退出進程,最大限度的保證非同步事件的安全性。 推薦學習:以上是swoole怎麼退出的詳細內容。更多資訊請關注PHP中文網其他相關文章!