在多进程的时候如何获取所有进程的连接数?

wgole

$worker->connections 这样只能获取到当前进程的连接数。

4264 2 0
2个回答

walkor 打赏

简单的方法是把进程数写到一个公共的存储,需要的时候去读取这个存储。
例如每个进程把连接数写到本地一个文件中,需要总数的时候去读取这个文件

  • 暂无评论
pader

我想获取每个 Worker 进程的信息是通过 Channel 来做的,每个进程启动时都监听一个专门用于收集信息的消息,当某个进程想要获取其它进程的消息时,就向 Channel 发出这个消息,同时监听上报的消息名,所有 Worker 会通过上报消息名提交自己的状态。

发出消息称为 Request,上报称为 Reponse,Request 通过 Worker 的数量作为 Count Down 来统计是否已收到所有进程的消息,同时加上超时的设置。

Request 完全收到消息后就通过 Client::unsubscribe($event); 取消该消息的订阅。

目前这样做还不错,我称这个组件叫作 Collector,哈哈。

  • 暂无评论
年代过于久远,无法发表回答
×
🔝