企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 事件回调函数 `Swoole\Server`是事件驱动模式,所有的业务逻辑代码必须写在事件回调函数中。当特定的网络事件发生后,底层会主动回调指定的`PHP`函数。 * 共支持`13`种事件,具体详情请参考各个页面详细页 * PHP语言有[4种回调函数的写法](https://wiki.swoole.com/wiki/page/458.html) 事件执行顺序 ---- * 所有事件回调均在`$server->start`后发生 * 服务器关闭程序终止时最后一次事件是`onShutdown` * 服务器启动成功后,`onStart`/`onManagerStart`/`onWorkerStart`会在不同的进程内并发执行 * `onReceive`/`onConnect`/`onClose`在`Worker`进程中触发 * `Worker`/`Task`进程启动/结束时会分别调用一次`onWorkerStart`/`onWorkerStop` * `onTask`事件仅在`task`进程中发生 * `onFinish`事件仅在`worker`进程中发生 > `onStart/onManagerStart/onWorkerStart` 3个事件的执行顺序是不确定的 异常捕获 ---- * `swoole`不支持`set_exception_handler`函数 * 如果你的PHP代码有抛出异常逻辑,__必须在事件回调函数顶层进行try/catch来捕获异常__ ```php $serv->on('Receive', function() { try { //some code } catch(Exception $e) { //exception code } } ``` 协程模式 ---- `Swoole2/4`版本支持了协程,使用协程后事件回调函数将会并发地执行。协程是一种用户态线程实现,没有额外的调度消耗,仅占用内存。使用协程模式,可以理解为“**每次事件回调函数都会创建一个新的线程去执行,事件回调函数执行完成后,线程退出**”。 如果希望关闭协程,可设置: ```php $server->set(["enable_coroutine" => false, ]); ```