swoole中退出、异常与错误的处理笔记

关于PHP这方面的知识 能够看 https://www.cnblogs.com/zyf-zhaoyafei/p/6928149.html 进行补课php

而后下面记录一下使用swoole的时候须要注意的地方html

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------swoole

在官方文档中 https://wiki.swoole.com/wiki/page/501.html函数

在swoole程序中禁止使用exit/die,若是PHP代码中有exit/die,当前工做的Worker进程、Task进程、User进程、以及swoole_process进程会当即退出。php-fpm

建议使用try/catch的方式替换exit/die,实现中断执行跳出PHP函数调用栈。spa

function swoole_exit($msg) { //php-fpm的环境 if (ENV=='php') { exit($msg); } //swoole的环境 else { throw new Swoole\ExitException($msg); } } 

以上代码并未实现ENV常量和Swoole\ExitException,请自行实现日志

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------code

而后说一下异常捕获 https://wiki.swoole.com/wiki/page/498.htmlhtm

  • PHP代码中若是有异常抛出,必须在回调函数中进行try/catch捕获异常,不然会致使工做进程退出
  • 不支持set_exception_handler,必须使用try/catch方式处理异常

可经过register_shutdown_function来捕获致命错误,在进程异常退出时作一些清理工做blog

例子 https://wiki.swoole.com/wiki/page/305.html

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

因而啰嗦了一大堆,其实须要注意的就是不要用 exit 函数,try的方式来处理异常,全局异常捕获不能用,再实现一个register_shutdown_function 把错误也捕获了

避免运行的时候出现什么奇怪的问题,致使服务进程停止,同时也能够记录详细的日志。

相关文章
相关标签/搜索