Server->getClientInfo

Server->getClientInfo函数用来获取连接的信息,别名是Server->connection_info

函数原型

  1. bool|array Server->getClientInfo(int $fd, int $extraData, bool $ignoreError = false)

参数

  • $fd:客户端连接的fd
  • $extraData:扩展信息,保留参数,目前无任何效果
  • $ignoreError 是否忽略错误,如果设置为true,即使连接关闭也会返回连接的信息

返回值

  • 如果传入的$fd存在,将会返回一个数组
  • 连接不存在或已关闭,返回false

当使用dispatch_mode=1/3配置时,考虑到这种数据包分发策略用于无状态服务,当连接断开后相关信息会直接从内存中删除,所以Server->getClientInfo是获取不到相关连接信息的。

  1. $fdinfo = $serv->getClientInfo($fd);
  2. var_dump($fdinfo);
  3. array(5) {
  4. ["reactor_id"]=>
  5. int(3)
  6. ["server_fd"]=>
  7. int(14)
  8. ["server_port"]=>
  9. int(9501)
  10. ["remote_port"]=>
  11. int(19889)
  12. ["remote_ip"]=>
  13. string(9) "127.0.0.1"
  14. ["connect_time"]=>
  15. int(1390212495)
  16. ["last_time"]=>
  17. int(1390212760)
  18. }
  • 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隧道加密,并且客户端设置了证书时会额外添加此项信息