🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# onConnect [TOC] 有新的连接进入时,在worker进程中回调。函数原型: ~~~ function onConnect(swoole_server $server, int $fd, int $reactorId); ~~~ * `$server`是`Swoole\Server`对象 * `$fd`是连接的文件描述符,发送数据/关闭连接时需要此参数 * `$reactorId`来自哪个`Reactor`线程 > 关于`$fd`和`$reactorId`[详细的解释](回调函数中的reactor_id和fd.md) > onConnect/onClose这2个回调发生在worker进程内,而不是主进程。 > UDP协议下只有onReceive事件,没有onConnect/onClose事件 ## dispatch\_mode = 1/3 在`1.7.15`以上版本中,当设置`dispatch_mode = 1/3`时会自动去掉`onConnect/onClose`事件回调。原因是: * 在此模式下`onConnect/onReceive/onClose`可能会被投递到不同的进程。连接相关的`PHP`对象数据,无法实现在`onConnect`回调初始化数据,`onClose`清理数据 * `onConnect/onReceive/onClose`3种事件可能会并发执行,可能会带来异常