Server->getClientInfo
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错误信息列表
- websocket_status [可选项]
WebSocket
连接状态,当服务器是Swoole\WebSocket\Server
时会额外增加此项信息 - uid [可选项] 使用
bind
绑定了用户ID
时会额外增加此项信息 - ssl_client_cert [可选项] 使用
SSL
隧道加密,并且客户端设置了证书时会额外添加此项信息