4.2.10

最后更新于:2022-04-02 06:17:08

# 4.2.10 [TOC] `swoole_server->getClientInfo`函数用来获取连接的信息,别名是`swoole_server->connection_info` ## 函数原型 ~~~ bool|array swoole_server->getClientInfo(int $fd, int $extraData, bool $ignoreError = false) ~~~ ## 参数 ## 返回值 * 如果传入的`$fd`存在,将会返回一个数组 * 连接不存在或已关闭,返回`false` * 第`3`个参数表示是否忽略错误,如果设置为`true`,即使连接关闭也会返回连接的信息 > * `connect_time`,`last_time`在`1.6.10`或更高版本可用 > * 当`dispatch_mode=1/3`时,考虑到这种数据包分发策略用于无状态服务,当连接断开后相关信息会直接从内存中删除,所以`swoole_server->getClientInfo`是获取不到相关连接信息的。 ~~~ $fdinfo = $serv->connection_info($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) } $udp_client = $serv->connection_info($fd, $from_id); var_dump($udp_client); ~~~ * **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错误信息列表](https://wiki.swoole.com/wiki/page/172.html) * **websocket\_status**\[可选项\]`WebSocket`连接状态,当服务器是`Swoole\WebSocket\Server`时会额外增加此项信息 * **uid**\[可选项\] 使用`bind`绑定了用户`ID`时会额外增加此项信息 * **ssl\_client\_cert**\[可选项\] 使用`SSL`隧道加密,并且客户端设置了证书时会额外添加此项信息
';