我菜鳥,對workerman的機制還不是很了解
在onWorkerStart中,先從mysql獲取到指定的member的數(shù)據(jù),然后循環(huán)這些member,每個member都單獨建立ws鏈接請求。
但問題是,數(shù)據(jù)庫是會變動的,會有新的member加入,會有member狀態(tài)修改。那么在onWorkerStart進程執(zhí)行過程當(dāng)中,怎么實時獲取到最新的member數(shù)據(jù)呢?
1、單就論如何近乎實時的獲取數(shù)據(jù),方法很多,比如主動拉的話,可以考慮使用workerman-timer定時器;
2、另外提示幾個注意事項:
(1)數(shù)據(jù)庫連接句柄初始化不要放在主進程代碼里,盡管是單進程不會有問題,小心將來切換到多進程環(huán)境會引發(fā)unexpected error,所以養(yǎng)成好習(xí)慣一般在onWorkerStart里初始化,具體為啥,手冊都有。
(2)根據(jù)查詢出來的member數(shù)量來初始化對應(yīng)數(shù)量的異步連接對象,這個也很嚇人,除非對這個數(shù)量級別可控,否則可能因瞬時TCP連接暴漲導(dǎo)致可能的內(nèi)存吃緊甚至OOM,所以要需要適時的考慮復(fù)用連接策略。