函数名:Swoole\Server::getClientInfo()
函数描述:该函数用于获取客户端连接的信息,包括IP地址、端口、连接时间、最近一次发送数据时间等。
适用版本:Swoole 4.0.0及以上版本
用法:
$clientInfo = $server->getClientInfo($fd, $reactorId = -1, $noCheckConnection = false);
参数说明:
$fd
(必填):客户端的文件描述符,通过其他事件回调函数中的参数传入。$reactorId
(可选):指定获取客户端信息所在的Reactor线程ID,如果不指定,默认为-1,表示随机选择一个Reactor线程。$noCheckConnection
(可选):是否检查连接状态,默认为false,如果设置为true,即使客户端已经关闭连接,也会返回客户端信息。
返回值:
- 成功时,返回包含客户端信息的关联数组,包括以下字段:
server_fd
:服务器文件描述符server_port
:服务器端口remote_port
:客户端端口remote_ip
:客户端IP地址connect_time
:连接时间,Unix时间戳last_time
:最近一次发送数据的时间,Unix时间戳
- 失败时,返回false。
示例:
$server->on('Receive', function ($server, $fd, $reactorId, $data) {
$clientInfo = $server->getClientInfo($fd);
if ($clientInfo) {
echo "客户端IP: " . $clientInfo['remote_ip'] . "\n";
echo "客户端端口: " . $clientInfo['remote_port'] . "\n";
echo "连接时间: " . date('Y-m-d H:i:s', $clientInfo['connect_time']) . "\n";
echo "最近一次发送数据时间: " . date('Y-m-d H:i:s', $clientInfo['last_time']) . "\n";
} else {
echo "获取客户端信息失败\n";
}
});
以上示例中,通过$server->on('Receive', ...)
事件回调函数中的$fd
参数获取客户端文件描述符,然后调用$server->getClientInfo($fd)
来获取客户端的信息。如果成功获取到客户端信息,则打印出客户端的IP地址、端口、连接时间和最近一次发送数据的时间。如果获取失败,则打印出错误信息。