exit/die函数的影响

最后更新于:2022-04-02 06:16:43

# exit/die函数的影响 [TOC] 在swoole程序中禁止使用exit/die,如果PHP代码中有`exit/die`,当前工作的Worker进程、Task进程、User进程、以及`swoole_process`进程会立即退出。 使用exit/die后Worker进程会因为异常退出, 被master进程再次拉起, 最终造成进程不断退出又不断启动和产生大量警报日志. 建议使用`try/catch`的方式替换`exit/die`,实现中断执行跳出`PHP`函数调用栈。 ~~~ function swoole_exit($msg) { //php-fpm的环境 if (ENV=='php') { exit($msg); } //swoole的环境 else { throw new Swoole\ExitException($msg); } } ~~~ > 以上代码并未实现`ENV`常量和`Swoole\ExitException`,请自行实现 异常处理的方式比`exit/die`更友好,因为异常是可控的,`exit/die`不可控。在最外层进行try/catch即可捕获异常,仅终止当前的任务。Worker进程可以继续处理新的请求,而`exit/die`会导致进程直接退出,当前进程保存的所有变量和资源都会被销毁。如果进程内还有其他任务要处理,遇到`exit/die`也将全部丢弃。
';