请问 聊天室 怎样限制链接数量

wxl1380610

RT 在哪里写好些 , 怎么写?

4089 2 0
2个回答

walkor

基于Worker的应用

如果是限制全局(workerman集群)的连接数
用存储实现一个计数器,在onConnect时+1,在onClose时-1。在onConnect的时候读取存储,判断下当前存储中的数字,如果大于上限,就执行$connection->close()。注意多进程访问存储存在并发问题,最好用memcache等存储的increment decrement原子操作去做

如果是设置每个进程的连接数
可以用php的全局变量记录,同样是在onConnect时+1,在onClose时-1。在onConnect的时判断全局变量的值,如果大于上限,就执行$connection->close();

基于Gateway/Worker

如果是限制全局(workerman集群)的连接数
方法同 基于Worker的应用 做法。
另外一种方法:Gateway/Worker提供了获得所有在线client_id列表的接口(Gateway::getOnlineStatus()),接口返回一个数组,在Event::onConnect中获取列表,对其使用count可得到全局(集群)的在线用户数,如果超过限制,调用Gateway::closeClient

如果是设置每个进程的连接数
方法同 基于Worker的应用 做法

  • 暂无评论
wxl1380610

谢谢老大

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