onConnect
最后更新于:2022-04-02 06:24:02
# 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种事件可能会并发执行,可能会带来异常
';