Server->stop

最后更新于:2022-04-02 06:19:59

# Server->stop [TOC] 使当前`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`后,退出进程,最大限度的保证异步事件的安全性。
';