Server->getClientInfo

最后更新于:2022-04-02 06:20:34

# Server->getClientInfo [TOC] `Server->getClientInfo`函数用来获取连接的信息,别名是`Server->connection_info` ## 函数原型 ~~~ bool|array Server->getClientInfo(int $fd, int $extraData, bool $ignoreError = false) ~~~ ## 参数 * `$fd`:客户端连接的`fd` * `$extraData`:扩展信息,保留参数,目前无任何效果 * `$ignoreError`是否忽略错误,如果设置为`true`,即使连接关闭也会返回连接的信息 ## 返回值 * 如果传入的`$fd`存在,将会返回一个数组 * 连接不存在或已关闭,返回`false` > 当使用`dispatch_mode=1/3`配置时,考虑到这种数据包分发策略用于无状态服务,当连接断开后相关信息会直接从内存中删除,所以`Server->getClientInfo`是获取不到相关连接信息的。 ~~~ $fdinfo = $serv->getClientInfo($fd); var_dump($fdinfo); array(5) { ["reactor_id"]=> int(3) ["server_fd"]=> int(14) ["server_port"]=> int(9501) ["remote_port"]=> int(19889) ["remote_ip"]=> string(9) "127.0.0.1" ["connect_time"]=> int(1390212495) ["last_time"]=> int(1390212760) } ~~~ * **reactor\_id**来自哪个`Reactor`线程 * **server\_fd**来自哪个监听端口`socket`,这里不是客户端连接的`fd` * **server\_port**来自哪个监听端口 * **remote\_port**客户端连接的端口 * **remote\_ip**客户端连接的`IP`地址 * **connect\_time**客户端连接到`Server`的时间,单位秒,由`master`进程设置 * **last\_time**最后一次收到数据的时间,单位秒,由`master`进程设置 * **close\_errno**连接关闭的错误码,如果连接异常关闭,close\_errno的值是非零,可以参考[Linux错误信息列表](附录:Linux错误码errno列表.md) * **websocket\_status**\[可选项\]`WebSocket`连接状态,当服务器是`Swoole\WebSocket\Server`时会额外增加此项信息 * **uid**\[可选项\] 使用`bind`绑定了用户`ID`时会额外增加此项信息 * **ssl\_client\_cert**\[可选项\] 使用`SSL`隧道加密,并且客户端设置了证书时会额外添加此项信息
';