ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# Server->getClientList 用来遍历当前`Server`所有的客户端连接,`Server::getClientList`方法是基于共享内存的,不存在`IOWait`,遍历的速度很快。另外`getClientList`会返回所有`TCP`连接,而不仅仅是当前`Worker`进程的`TCP`连接。 > 推荐使用[Server::$connections](Serverconnections.md)迭代器来遍历连接`getClientList`的别名是`connection_list` > `getClientList`仅可用于`TCP`客户端,`UDP`服务器需要自行保存客户端信息 > `SWOOLE_BASE`模式下只能获取当前进程的连接 函数原型: ~~~ Server::getClientList(int $start_fd = 0, int $pagesize = 10); ~~~ 此函数接受`2`个参数,第`1`个参数是起始`fd`,第`2`个参数是每页取多少条,最大不得超过`100`。 * 调用成功将返回一个数字索引数组,元素是取到的`$fd`。数组会按从小到大排序。最后一个`$fd`作为新的`start_fd`再次尝试获取 * 调用失败返回`false` 示例: ~~~ $start_fd = 0; while(true) { $conn_list = $serv->getClientList($start_fd, 10); if ($conn_list===false or count($conn_list) === 0) { echo "finish\n"; break; } $start_fd = end($conn_list); var_dump($conn_list); foreach($conn_list as $fd) { $serv->send($fd, "broadcast"); } } ~~~