onmessage 回調(diào)使用redis操作數(shù)據(jù)。服務(wù)運行一段時間后,會偶然出現(xiàn)redis取不到數(shù)據(jù)的情況。也沒報鏈接超時或者異常,可能是什么原因?qū)е碌?。請問。跟我沒關(guān)閉redis 鏈接有關(guān)系嗎?
這個不好說什么問題。
你可以用redis的時候new個redis,連接存儲數(shù)據(jù),用完后關(guān)閉??纯从袥]有問題。
證實了這個問題。如果我處理完消息之后不關(guān)閉鏈接確實會偶爾出現(xiàn)redis讀取的問題,如果我處理完每個鏈接請求之后關(guān)閉的話則不出現(xiàn)。感覺像是多個進(jìn)程公用一個redis鏈接的問題。
嗯,有可能你在主進(jìn)程(Worker::runAll()運行前的代碼都屬于主進(jìn)程)初始化了redis連接導(dǎo)致的。
手冊有寫,不能在主進(jìn)程初始化資源類型,會被子進(jìn)程繼承公用造成數(shù)據(jù)錯亂
恩可是,我是在回調(diào)里調(diào)用的call_user_func_array里操作的redis的按理說應(yīng)該是屬于子進(jìn)程啊。主進(jìn)程里只有autoload