RT 在哪里写好些 , 怎么写?
基于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的应用 做法
谢谢老大
基于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的应用 做法
谢谢老大