国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

多進程如何共享大型數(shù)組?

dingfei

php進程中數(shù)組占用5Gb內(nèi)存,隨著不斷循環(huán)計算數(shù)據(jù)在不斷的變化。
?
其他進程,如何去讀取這個數(shù)組里面的數(shù)據(jù)?通過redis、GlobalData等都不行,因為要保存到redis、GlobalData需要先把數(shù)組序列化,然后保存。然后讀取的又需要反序列化,非常耗時間
?
有沒有什么辦法?求各位大佬指點迷津

  1. 沒有辦法共享這個數(shù)組的內(nèi)存地址給其他進程?
  2. 有沒有其他不比php數(shù)組性能差的數(shù)據(jù)結(jié)構(gòu) ?
5042 2 0
2個回答

walkor 打賞

進程間實時同步5G的數(shù)據(jù)最好是增量同步,既同步只同步改變的部分,不改變的部分不用同步,這樣可以大大加快同步速度。但是這樣對于開發(fā)者要求較高,并且容易出現(xiàn)數(shù)據(jù)不一致。
?
最好的方法就是只用一個進程裝這5G數(shù)據(jù),需要這5G數(shù)據(jù)的時候向這個進程發(fā)起請求獲得所需數(shù)據(jù)。另外redis也有豐富的數(shù)據(jù)結(jié)構(gòu)比如hash 都可以做到只同步某個key的數(shù)據(jù),而不用把所有數(shù)據(jù)獲取出來再存進去。

  • dingfei 2019-05-14

    受教了。試了一下,發(fā)現(xiàn)問題是redis并發(fā)太慢了,數(shù)據(jù)有2千萬條,而redis每秒并發(fā)才10萬級別,保存數(shù)據(jù)來不及。

  • dingfei 2019-05-14

    子進程可以共享父進程的數(shù)據(jù)。 workerman能做到動態(tài)創(chuàng)建子進程嗎?收到客戶端發(fā)來的消息就創(chuàng)建一個子進程,執(zhí)行完就退出

  • walkor 2019-05-14

    不支持動態(tài)創(chuàng)建子進程。一個消息創(chuàng)建一個子進程開銷非常大

  • dingfei 2019-05-16

    @1:感謝解答!

dignfei

共享內(nèi)存可以

  • 暫無評論
年代過于久遠(yuǎn),無法發(fā)表回答
??