swoole中退出、异常与错误的处理笔记
关于PHP这方面的知识 可以看 https://www.cnblogs.com/zyf-zhaoyafei/p/6928149.html 进行补课
然后下面记录一下使用swoole的时候需要注意的地方
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
在官方文档中 https://wiki.swoole.com/wiki/page/501.html
在swoole程序中禁止使用exit/die,如果PHP代码中有exit/die,当前工作的Worker进程、Task进程、User进程、以及swoole_process进程会立即退出。
建议使用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,请自行实现
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
然后说一下异常捕获 https://wiki.swoole.com/wiki/page/498.html
PHP代码中如果有异常抛出,必须在回调函数中进行try/catch捕获异常,否则会导致工作进程退出- 不支持
set_exception_handler,必须使用try/catch方式处理异常
可通过register_shutdown_function来捕获致命错误,在进程异常退出时做一些清理工作
例子 https://wiki.swoole.com/wiki/page/305.html
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
于是啰嗦了一大堆,其实需要注意的就是不要用 exit 函数,try的方式来处理异常,全局异常捕获不能用,再实现一个register_shutdown_function 把错误也捕获了
避免运行的时候出现什么奇怪的问题,导致服务进程中止,同时也可以记录详细的日志。
swoole中退出、异常与错误的处理笔记的更多相关文章
- PHP中的异常和错误(转载)
博客好久没有更新了,实在惭愧,最近在忙人生大事,哈哈!这段时间没有看什么新的东西,结合项目中遇到的PHP异常处理问题,我又重新梳理了之前模糊的概念,希望对大家理解PHP异常处理有所帮助. 请一定要注意 ...
- PHP7中的异常与错误处理
PHP 中的 Exception, Error, Throwable PHP 中将代码自身异常(一般是环境或者语法非法所致)称作错误 Error,将运行中出现的逻辑错误称为异常 Exception 错 ...
- 深入探讨Java中的异常与错误处理
Java中的异常处理机制已经比较成熟,我们的Java程序到处充满了异常的可能,如果对这些异常不做预先的处理,那么将来程序崩溃就无从调试,很难找到异常所在的位置.本文将探讨一下Java中异常与错误的处理 ...
- Python基础之:Python中的异常和错误
目录 简介 Python中的内置异常类 语法错误 异常 异常处理 抛出异常 异常链 自定义异常 finally 简介 和其他的语言一样,Python中也有异常和错误.在 Python 中,所有异常都是 ...
- ionic创建工程中遇到异常、错误及解决方法
1. 创建工程——download failed ionic start myApp tabs 遇到如下错误 Downloading--Failed! Error:Timeout of 25000ms ...
- 第33节:Java面向对象中的异常
Java中的异常和错误 Java中的异常机制,更好地提升程序的健壮性 throwable为顶级,Error和Exception Error:虚拟机错误,内存溢出,线程死锁 Exception:Runt ...
- ASP.NET Core 中间件Diagnostics使用 异常和错误信息
ASP.NET Core 中间件(Middleware)Diagnostics使用.对于中间件的介绍可以查看之前的文章ASP.NET Core 开发-中间件(Middleware). Diagnost ...
- python中常见的一些错误异常类型
python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误.你可以使用该功能来调试python程序. 什么是异常? 异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的 ...
- 《java中异常和错误》
异常和错误的区别. 异常: 在Java中程序的错误主要是语法错误和语义错误,一个程序在编译和运行时出现的错误我们统一称之为异常,它是VM(虚拟机)通知你的一种方式,通过这种方式,VM让你知道,你(开发 ...
随机推荐
- REST接口设计规范总结
简介 Representational State Transfer 简称 REST 描述了一个架构样式的网络系统.REST 指的是一组架构约束条件和原则.满足这些约束条件和原则的应用程序或设计就是 ...
- virtualbox+vagrant学习-2(command cli)-9-vagrant Plugin命令
Plugin 格式: vagrant plugin <command> [<args>] 这是用来管理插件的命令. 1)Plugin Expunge 格式: vagrant p ...
- Jenkins构建Python项目失败
Console Output 提示:'Python' 不是内部或外部命令,也不是可运行的程序 定位原因:python.exe 不在jenkins执行用户的PATH里面 解决:构建的时候Python命 ...
- eclipse中文乱码解决
1. 改变整个文件类型的编码格式 1) eclipse->window->preferences->General->Content Types 2) 找到要修改的文 ...
- php官网下载的chm手册,源码字号太小的问题解决
首先,到官方网站上下载chm格式的文档,地址如下: http://php.net/downloads.php 如图,点击荧光笔标出链接 然后就可以看到各种语言版本的文档手册,可以选择中文版,并带有笔记 ...
- 微信小程序、安卓APP、苹果APP对比分析
今天的话题主要是关于微信小程序.安卓APP.苹果APP对比分析.既然是对比分析肯定是将它们一个一个说明. 本篇不涉及技术话题,只讲解微信小程序.安卓APP.苹果APP它们各自的优缺点及其应用场景. 一 ...
- TortoiseGit需要重复填写用户名和密码的问题
命令行执行: git config --global credential.helper store 即可
- List集合和iterator并发异常处理
一:List接口: 子类:ArrayList LinkedList 特点:Unlike sets, lists typically allow duplicate elements.不像set集合 ...
- MySQL(三)架构
和其他数据库相比,MySQL有点与众不同,他的架构可以在多种不同场景中应用并发挥好的作用,但同时也会带来一点选择上的困难.MySQL并不完美,却足够灵活,能够适应高要求的环境.为了充分发挥MySQL的 ...
- RS485接口为什么要接地
RS485接口为什么要接地 RS485接口有三根线,分别是A.B和GND线.因为RS485是差分传输的,所以很多工程师以为GND地线不重要,经常不接,甚至有些工程为了节约成本用两芯线或者用视频线来传输 ...