在start.php文件修改,本想更改為自定義進(jìn)程,發(fā)現(xiàn)改的很大,然后給提到了外面
就有幾個(gè)比較初級(jí)的問(wèn)題
本身Gateway是可以用$_SESSION了,那bootstrap.php里面的session是否可以不在啟動(dòng)Gateway時(shí)去重新加載一次?
http開(kāi)了兩個(gè)進(jìn)程,那么在fork的時(shí)候是復(fù)制了一個(gè)session還是共享同一個(gè)??沒(méi)有細(xì)看代碼 手動(dòng)狗頭,,是在fork的時(shí)候引用的地址嗎
關(guān)于DI的容器,是不是只要我worker啟動(dòng)一個(gè)的時(shí)候就得加載一次,他不是共享的,單獨(dú)在各個(gè)進(jìn)程??
其次這個(gè)核心數(shù)是真的不知道應(yīng)該設(shè)定多大,假設(shè)服務(wù)器8核16G,我應(yīng)該設(shè)定多少核心
暫時(shí)集成還不知道有沒(méi)有坑,其他一切正常
有沒(méi)有大佬教教小弟...
GatewayWorker和webman代碼整合在一起沒(méi)有多大意義。他們是獨(dú)立的項(xiàng)目,應(yīng)用場(chǎng)景也不同。將他們代碼整合到一起類似與把MYSQL和Redis代碼整合在一起的感覺(jué)。如果你需要在GatewayWorker中使用數(shù)據(jù)庫(kù) redis等組件,直接composer安裝參照對(duì)應(yīng)組件的文檔使用就好了。
GatewayWorker 和 webman是獨(dú)立的項(xiàng)目,任何一方更改或者session去掉session不影響另外一方,session都是獨(dú)立不互通的。就像你改了MYSQL源碼不影響Redis一樣。
session是在有客戶端連接請(qǐng)求時(shí)才有的東西,fork進(jìn)程時(shí)進(jìn)程里并沒(méi)有任何session,不存在fork時(shí)復(fù)制或者共享session的說(shuō)法。fork進(jìn)程后有連接有請(qǐng)求的時(shí)候才會(huì)有session相關(guān)的操作。session原理基本都一樣,找個(gè)地方把數(shù)據(jù)存起來(lái),請(qǐng)求中有個(gè)類似sessionid的東西,請(qǐng)求來(lái)了就到存儲(chǔ)里讀取對(duì)應(yīng)sessionid的數(shù)據(jù),請(qǐng)求完畢寫(xiě)回存儲(chǔ)。這個(gè)存儲(chǔ)可能是磁盤(pán)、redis、甚至內(nèi)存等。
每個(gè)進(jìn)程都是獨(dú)立的,內(nèi)存及變量都是隔離的,互相不影響。每個(gè)進(jìn)程啟動(dòng)的時(shí)候都會(huì)初始化自己的DI、Mysql、Redis等等
進(jìn)程數(shù)參考手冊(cè) http://doc.workerman.net/faq/processes-count.html
多謝大佬,事實(shí)上準(zhǔn)備直接拿GatewayWorker做一個(gè)社交項(xiàng)目.
之前有只用GatewayWorker做聊天相關(guān)和一些定時(shí)服務(wù),tp或laravel做api,
雖然GatewayWorker也可以同時(shí)啟動(dòng)http服務(wù)
webman自定義進(jìn)程websocket可以完成聊天,
但時(shí)間周期太短,所以最后想直接放在一起,用雙方集成好的部分就好了.
大約不會(huì)出現(xiàn)什么問(wèn)題吧?
上線運(yùn)行,完事準(zhǔn)備背鍋。
手動(dòng)狗頭。