onmessage 回调使用redis的问题

codeninjia

onmessage 回调使用redis操作数据。服务运行一段时间后,会偶然出现redis取不到数据的情况。也没报链接超时或者异常,可能是什么原因导致的。请问。跟我没关闭redis 链接有关系吗?

3444 1 0
1个回答

walkor

这个不好说什么问题。

你可以用redis的时候new个redis,连接存储数据,用完后关闭。看看有没有问题。

  • codeninjia 2017-11-15

    证实了这个问题。如果我处理完消息之后不关闭链接确实会偶尔出现redis读取的问题,如果我处理完每个链接请求之后关闭的话则不出现。感觉像是多个进程公用一个redis链接的问题。

  • walkor 2017-11-15

    嗯,有可能你在主进程(Worker::runAll()运行前的代码都属于主进程)初始化了redis连接导致的。
    手册有写,不能在主进程初始化资源类型,会被子进程继承公用造成数据错乱

  • codeninjia 2017-11-15

    恩可是,我是在回调里调用的call_user_func_array里操作的redis的按理说应该是属于子进程啊。主进程里只有autoload

年代过于久远,无法发表回答
🔝