我菜鸟,对workerman的机制还不是很了解
在onWorkerStart中,先从mysql获取到指定的member的数据,然后循环这些member,每个member都单独建立ws链接请求。 但问题是,数据库是会变动的,会有新的member加入,会有member状态修改。那么在onWorkerStart进程执行过程当中,怎么实时获取到最新的member数据呢?
1、单就论如何近乎实时的获取数据,方法很多,比如主动拉的话,可以考虑使用workerman-timer定时器; 2、另外提示几个注意事项: (1)数据库连接句柄初始化不要放在主进程代码里,尽管是单进程不会有问题,小心将来切换到多进程环境会引发unexpected error,所以养成好习惯一般在onWorkerStart里初始化,具体为啥,手册都有。 (2)根据查询出来的member数量来初始化对应数量的异步连接对象,这个也很吓人,除非对这个数量级别可控,否则可能因瞬时TCP连接暴涨导致可能的内存吃紧甚至OOM,所以要需要适时的考虑复用连接策略。
1、单就论如何近乎实时的获取数据,方法很多,比如主动拉的话,可以考虑使用workerman-timer定时器;
2、另外提示几个注意事项:
(1)数据库连接句柄初始化不要放在主进程代码里,尽管是单进程不会有问题,小心将来切换到多进程环境会引发unexpected error,所以养成好习惯一般在onWorkerStart里初始化,具体为啥,手册都有。
(2)根据查询出来的member数量来初始化对应数量的异步连接对象,这个也很吓人,除非对这个数量级别可控,否则可能因瞬时TCP连接暴涨导致可能的内存吃紧甚至OOM,所以要需要适时的考虑复用连接策略。