$worker = new Worker('websocket://0.0.0.0:9393', $context); $worker->transport = 'ssl'; // 启动4个进程对外提供服务 $worker->count = 24;比如有三个用户进来,worker->connection的个数只有两个?其他的到其他进程去了?
接着我想把id和connection组成的数据放到缓存里,一旦connection放在数据中,这个数组就没数据,这是什么原因呢? 如: $info =
这个数组在每个进程都有一个,每个进程的变量是独立的,不能共享。 设置成但进程就好了
每个进程都是独立的没关系的,我是把这个数组放在redis缓存里了,缓存是针对整个服务器的
我是不想把他设置为单进程,所以才引入缓存这个东西存储每个进程的connection
单进程我担心连接数太多,扛不住,我们会多个房间同时开启websocket
问题是在于:我把connection变量放在数组里,直接打印数组为空
外部存储无法存储内存里的资源变量,就像你无法在redis里存储mysql连接对象一样
那我如何能保存所有的连接呢,用于后续发给所有的用户,进程数不设为1的情况
用gatewayWorker吧,这些都写好的
workerman如何实现晓得吗
workerman手册channel组件里有例子。
我就是不知道自己实现该怎么存储,谢谢你
追加另一个问题:我在用gateway的时候,gateway和businessworker都启动了4条进程,然后我在Event.php中处理OnWorkerStart函数:
echo "进去定时器了哦\n"; Timer::add(10, function(){ echo "timer\n"; Gateway::sendToGroup(321, '发送定时信息1'); });
进去定时器了哦 这句话会执行4次,定时器里面也每10秒发送4次相同的数据,我该怎样做,才能实现发送一次呢
除了对$businessWorker->id 进行0,1,2,3的判断,还有其他方法吗
还有个问题:客户端连通服务器后,我用Gateway::sendToGroup(321, '发送定时信息1');向客户端发送了一两分钟都发送成功,它这个不会掉线吗?是不是在哪里可以设置时间?
接着我想把id和connection组成的数据放到缓存里,一旦connection放在数据中,这个数组就没数据,这是什么原因呢?
如:
$info =
这个数组在每个进程都有一个,每个进程的变量是独立的,不能共享。
设置成但进程就好了
每个进程都是独立的没关系的,我是把这个数组放在redis缓存里了,缓存是针对整个服务器的
我是不想把他设置为单进程,所以才引入缓存这个东西存储每个进程的connection
单进程我担心连接数太多,扛不住,我们会多个房间同时开启websocket
问题是在于:我把connection变量放在数组里,直接打印数组为空
外部存储无法存储内存里的资源变量,就像你无法在redis里存储mysql连接对象一样
那我如何能保存所有的连接呢,用于后续发给所有的用户,进程数不设为1的情况
用gatewayWorker吧,这些都写好的
workerman如何实现晓得吗
workerman手册channel组件里有例子。
我就是不知道自己实现该怎么存储,谢谢你
追加另一个问题:我在用gateway的时候,gateway和businessworker都启动了4条进程,然后我在Event.php中处理OnWorkerStart函数:
进去定时器了哦 这句话会执行4次,定时器里面也每10秒发送4次相同的数据,我该怎样做,才能实现发送一次呢
除了对$businessWorker->id 进行0,1,2,3的判断,还有其他方法吗
还有个问题:客户端连通服务器后,我用Gateway::sendToGroup(321, '发送定时信息1');向客户端发送了一两分钟都发送成功,它这个不会掉线吗?是不是在哪里可以设置时间?