我遇到的场景是这样: 在onMessage中用户发送绑定信息过来后我会生成一个定时器来主动推送数据 这块逻辑执行时间比较久,导致在这个定时器执行过程中 其他用户发送绑定信息服务端阻塞不会绑定成功 这种情况下应该怎么处理?
耗时操作就不要放到gateway进程里去,单独开一个进程, 调用getAllUidList 接口获取绑定的uid,然后调用 sendToUid 来发送就行,没必要去阻塞gateway进程
大佬 那我是需要在onmessage绑定成功后再new Worker() 然后创建个定时器是吗
开自定义进程看这里 https://www.workerman.net/q/8853 不需要,加定时器无非是为了隔一段时间推送一次数据,定时器直接在自定义进程里的onWorkerStart 里写 类似这样 public function onWorkerStart($worker) { //假设隔10秒推送一次数据 Timer::add(10,function (){ //获取绑定的所有uid $uid_arr = Gateway::getAllUidList(void); //然后在这里循环uid_arr,给他们推送对应的数据就行了 })
}
耗时操作就不要放到gateway进程里去,单独开一个进程, 调用getAllUidList 接口获取绑定的uid,然后调用 sendToUid 来发送就行,没必要去阻塞gateway进程
大佬 那我是需要在onmessage绑定成功后再new Worker() 然后创建个定时器是吗
开自定义进程看这里 https://www.workerman.net/q/8853
不需要,加定时器无非是为了隔一段时间推送一次数据,定时器直接在自定义进程里的onWorkerStart 里写
类似这样
public function onWorkerStart($worker)
{
//假设隔10秒推送一次数据
Timer::add(10,function (){
//获取绑定的所有uid
$uid_arr = Gateway::getAllUidList(void);
//然后在这里循环uid_arr,给他们推送对应的数据就行了
})
}