本书未发布

exit/die 函数的影响

为了更好的阅读体验,将文档从 Swoole 官方文档 搬运过来。内容比较多,我会慢慢搬运过来,也欢迎大家以提交改进的方式一起帮助我。

swoole程序中禁止使用exit/die,如果 PHP 代码中有 exit/die,当前工作的 Worker进程、Task进程、User进程、以及swoole_process进程会立即退出。

使用exit/dieWorker进程会因为异常退出, 被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也将全部丢弃。

本文章首发在 LearnKu.com 网站上。
上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~