# connections
## 说明:
~~~
array $worker->connections
~~~
格式为
~~~
array(id=>connection, id=>connection, ...)
~~~
此属性中存储了**当前进程**的所有的客户端连接对象,其中id为connection的id编号,详情见手册[TcpConnection的id属性]([https://www.kancloud.cn/wwwoooshizha/warriorman/1823338](https://www.kancloud.cn/wwwoooshizha/warriorman/1823338))。
`$connections`在广播时或者根据连接id获得连接对象非常有用。
如果得知connection的编号为`$id`,可以很方便的通过`$worker->connections[$id]`获得对应的connection对象,从而操作对应的socket连接,例如通过`$worker->connections[$id]->send('...')`发送数据。
注意:如果连接关闭(触发onClose),对应的`connection`会从`$connections`数组里删除。
注意:开发者不要对这个属性做修改操作,否则可能造成不可预知的情况。
## 范例
~~~
use Workerman\Worker;
use Workerman\Lib\Timer;
require_once __DIR__ . '/Workerman/Autoloader.php';
Warriorman\Worker::rename();
$worker = new Worker('tcp://0.0.0.0:2020');
$worker ->protocol = "\Workerman\Protocols\Text";
// 进程启动时设置一个定时器,定时向所有客户端连接发送数据
$worker->onWorkerStart = function($worker)
{
// 定时,每10秒一次
Timer::add(10, function()use($worker)
{
// 遍历当前进程所有的客户端连接,发送当前服务器的时间
foreach($worker->connections as $connection)
{
$connection->send(time());
}
});
};
// 运行worker
Worker::runAll();
~~~
- 序言
- 启动停止
- 简单的开发示例
- 性能测试
- 性能测试-数据库
- 通讯协议
- Coroutine类
- create
- getCid
- yield
- resume
- sleep
- wait
- getTotalNum
- isExist
- defer
- Runtime类
- Worker类
- 构造函数
- 属性
- workerId
- id
- name
- protocol
- transport
- reusePort
- backlog
- connections
- stdoutFile
- pidFile
- logFile
- user
- reloadable
- daemonize
- globalEvent
- 回调属性
- onWorkerStart
- onWorkerReload
- onConnect
- onMessage
- onClose
- onBufferFull
- onBufferDrain
- onError
- 方法
- rename
- runAll
- stopAll
- listen
- TcpConnection类
- 属性
- id
- protocol
- worker
- maxSendBufferSize
- defaultMaxSendBufferSize
- defaultMaxPackageSize
- 方法
- set
- send
- getRemoteIp
- getRemotePort
- close
- destroy
- pauseRecv
- resumeRecv
- pipe
- Timer定时器类
- add
- del
- 定时器注意事项
- Channel类
- 构造方法
- push
- pop
- length
- isEmpty()