English | 简体中文 | 繁體中文
查询

Swoole\Server::getClientInfo()函数—用法及示例

「 获取客户端连接的信息,包括IP地址、端口、连接时间、最近一次发送数据时间等 」


函数名: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地址、端口、连接时间和最近一次发送数据的时间。如果获取失败,则打印出错误信息。

补充纠错
热门PHP函数
分享链接