× 警告!旧版文档已经暂停维护,请查看新版文档。点击前往新版文档

Server::$connections

TCP连接迭代器,可以使用foreach遍历服务器当前所有的连接,此属性的功能与Server->getClientList是一致的,但是更加友好。遍历的元素为单个连接的fd

注意$connections属性是一个迭代器对象,不是PHP数组,所以不能用var_dump或者数组下标来访问,只能通过foreach进行遍历操作。

foreach($server->connections as $fd)
{
    $server->send($fd, "hello");
}

echo "当前服务器共有 ".count($server->connections). " 个连接\n";

此属性在1.7.16以上版本可用

PCRE

连接迭代器依赖pcre库(不是PHPpcre扩展),未安装pcre库无法使用此功能

pcre库的安装方法, http://wiki.swoole.com/wiki/page/312.html

4.1.0以上版本移除了pcre依赖

安装好PCRE库后需要重新编译安装swoole,然后使用php --ri swoole查看swoole扩展相关信息中是否有pcre => enabled

Base 模式

SWOOLE_BASE模式下不支持跨进程操作TCP连接,因此在BASE模式中,只能在当前进程内使用$connections迭代器。


  • 陈镇海

    我只有一个客户端连接,但是客户端刷新之后 connections就变成两个了,这是什么原因

  • 屏风山下的猎人

    有个异问,假如我起了一个server,上面在哪里调用 呢,就是说我先得到我起的server目前所有的客户端的连接

  • 马春龙

    ubuntu14.04已经装了pcre扩展 php扩展里能看到 并且重新编译了swoole 还是抛错Undefined property: swoole_websocket_server::$connections

  • Dandlion

    swoole版本1.7.20; rpm -qa | grep pcre pcre-7.8-6.el6.x86_64 可是还是显示 :PHP Notice: Undefined property: swoole_websocket_server::$connections ????

  • king

    yum install pcre-devel

  • www

    我也遇到这个问题了。。请问你解决了吗

  • 在 onTask 中使用时, connections 总是返回 false,什么原因?

  • 今生有你✅已认证了

       问个问题,如果现在同时10000人在线,1000人呢又在同一秒内,发送1000条数据,如果要把这些数据广播给所有的连接的成员,那也就是1000000条数据,这个还只是同时发送一条数据,如果用这个方法循环广播的话,需要多长时间才能将这一千条数据,发送给所有在线的客户呢。求解.
    

  • 今生有你✅已认证了

    问个问题,如果现在同时1000人在线,1000人呢又在同一秒内,发送1条数据,如果要把这些数据广播给所有的连接的成员,那也就是1000000条数据,这个还只是同时发送一条数据,如果用这个方法循环广播的话,需要多长时间才能将这一千条数据,发送给所有在线的客户呢。求解.

  • 炫纹科技

    可以给fd重新赋值么?

  • 升天包子

    • 迭代器对象
    • 需要foreach

  • 上衣治胃病

    有个问题不知道谁能回答一下,我有两个连接连上了,其中一个退出后,$connections里面的连接数还是两个,怎么去除断开的那个呢

  • 一路逆行

    我的版本是2.0,swoole_server对象里面的connections一直都是空,已经有客户端连接着的,这是为什么啊???

  • 鄱阳一站

    32797 Client: Connect. master_pid:12011. manager_pid:12012. worker_id:3. worker_pid:12020. worker 当前服务器共有 1 个连接 Client: Connect. master_pid:12011. manager_pid:12012. worker_id:0. worker_pid:12017. worker 当前服务器共有 2 个连接 Client: Connect. master_pid:12011. manager_pid:12012. worker_id:1. worker_pid:12018. worker 当前服务器共有 3 个连接

  • ‭

    使用connections的时候foreache里是无效的参数,安装了pcre

  • Chris

    我也是同样的问题 Undefined property: Swoole\Server\Port::$connections

  • 若疯

    如果我启动的 \Swoole\WebSocket\Server ,然后有的请求是http过来的,有的是websocket过来的,都是同一个端口。那我要怎么区别 Server::$connections迭代出来的是http的请求客户端,还是websocket请求的客户端呢?