Swoole TCP服务器getClientInfo方法的典型应用场景

getClientInfo方法在Swoole TCP服务器开发中有多种实际应用场景,以下是几个典型的使用案例:

1.连接管理与监控

<?php

$server = new Swoole\Server('0.0.0.0',9501);


$server->tick(1000,function()use($server){

    $start_fd = 0;

    
        echo "this is tick\n\r";
        $conn_list = $server->getClientList($start_fd,10);
       
        if($conn_list !== false  ){
           
                foreach($server->getClientList() as $fd){

                $info = $server->getClientInfo($fd);
                if(time() - $info['last_time'] > 30 ){
                    
                    $server->close($fd);
                    echo "关闭不活跃的客户端 fd = {$fd} .\n\r";
                }        


                }


        }
      //  $start_fd = end($conn_list);

        // foreach($conn_list as $fd){
        //         $info = $server->getClientInfo($fd);
        //         var_dump($info);

        // }

});


$server->on('Receive',function($server,$fd,$reactor_id,$data){

    echo "已连接\n\r";
    $clientInfo = $server->getClientInfo($fd);
    var_dump($clientInfo);

    $client_ip = $clientInfo['remote_ip'];
    if($client_ip == "127.0.0.1"){

        $server->close($fd);
    }

});


$server->on('Close',function($server,$fd){

    echo "{$fd} 已关闭";
});

$server->start();

 

posted @ 2025-04-16 15:19  X__cicada  阅读(13)  评论(0)    收藏  举报