workerman文檔里面建議將redis或者mysql的實(shí)例步驟放到onWorkerStart里面,fork之后執(zhí)行onWorkerStart,這樣實(shí)例就是屬于這個(gè)子進(jìn)程的。
但是在測(cè)試中,我發(fā)現(xiàn)如果在runAll前實(shí)例化,這個(gè)資源數(shù)據(jù)是copy on write的,并沒有發(fā)現(xiàn)在runAll外面實(shí)例化有什么影響
測(cè)試代碼如下:
[attach]1362[/attach]
?
在id為0的子進(jìn)程中改變r(jià)edis實(shí)例,并不會(huì)影響id為1的子進(jìn)程
兩次curl請(qǐng)求,第二個(gè)請(qǐng)求redis插入不進(jìn)去
?
為了測(cè)試copy on write
[attach]1363[/attach]
兩次curl請(qǐng)求,第一個(gè)輸出5,第二個(gè)輸出10
?
可見:
1.子進(jìn)程繼承父進(jìn)程的數(shù)據(jù),是以copy on write模型
2.在runAll實(shí)例化redis和mysql,好像并沒有什么不可
?
?
以上不知道是對(duì)是錯(cuò)