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

workerman里的進(jìn)程與子進(jìn)程

jackie

worker初學(xué)者
?
目前正在讀手冊(cè),讀到設(shè)置worker進(jìn)程數(shù)和onWorkerReload屬性時(shí)產(chǎn)生疑問(wèn)
?
想知道在使用worker的過(guò)程中,worker實(shí)例的多個(gè)進(jìn)程分別是什么時(shí)候啟動(dòng)的,onWorkerReload屬性的講解中,子進(jìn)程又是什么?在文檔-接口-stopAll中,也出現(xiàn)類(lèi)似表述。
?

6006 1 1
1個(gè)回答

phpcreeper

1.? ?worker實(shí)例的多個(gè)進(jìn)程分別是在 workerman 執(zhí)行完【上下文環(huán)境檢測(cè) --> worker各種初始化 ---> 信號(hào)安裝】等環(huán)節(jié)后分別fork 啟動(dòng)各個(gè)實(shí)例的子進(jìn)程的,在應(yīng)用層代碼里就是 onWorkerStart 回調(diào)即代表成功啟動(dòng)了該子進(jìn)程。
2.? 子進(jìn)程是什么? 子進(jìn)程就是由父進(jìn)程派生fork出來(lái)的進(jìn)程,父進(jìn)程專(zhuān)門(mén)用于管理子進(jìn)程,要時(shí)刻監(jiān)控子進(jìn)程以便子進(jìn)程退出時(shí)能夠正?;厥兆舆M(jìn)程,防止產(chǎn)生僵尸進(jìn)程,不處理任何業(yè)務(wù),而子進(jìn)程則用來(lái)處理外部請(qǐng)求。

  • jackie 2019-01-24

    是不是這樣:
    workerman會(huì)有一個(gè)主進(jìn)程,然后所有的worker實(shí)例里設(shè)置的count個(gè)進(jìn)程全部都是子進(jìn)程

  • phpcreeper 2019-01-24

    準(zhǔn)確的說(shuō):

    1. workerman會(huì)有一個(gè)主進(jìn)程或多個(gè)主進(jìn)程【是否有多個(gè)主進(jìn)程是取決于你一次性觸發(fā)了多少個(gè)啟動(dòng)腳本如何編寫(xiě)啟動(dòng)腳本】
    2. $worker->count 即代表當(dāng)前worker實(shí)例啟動(dòng)多少個(gè)子進(jìn)程,是的,這里的count落地的是子進(jìn)程。
  • jackie 2019-01-24

    @614:嗯嗯 懂了。謝謝!

  • phpcreeper 2019-01-24

    @5344 不客氣

  • jackie 2019-02-15

    @614:想追問(wèn)個(gè)問(wèn)題,假如worker->count設(shè)定4個(gè)子進(jìn)程編號(hào)0123,啟動(dòng)后先后進(jìn)來(lái)10個(gè)連接,如何分配給4個(gè)子進(jìn)程,是均衡分配,還是一個(gè)子進(jìn)程滿之后再由第二個(gè)子進(jìn)程來(lái)處理??

  • phpcreeper 2019-02-15
    1. 默認(rèn)不會(huì)均衡分配,會(huì)由系統(tǒng)內(nèi)核調(diào)度某個(gè)空閑的進(jìn)程處理連接。
    2. 如果想達(dá)到均衡分配,需要開(kāi)啟$worker->reusePort = true
  • jackie 2019-02-15

    @614:

    設(shè)置Worker->count = 4;
    public function onMessage($connection, $data)
    {
    $worker = $connection->worker;//$worker
    。。。。。
    foreach($worker->connections as $con){。。。。}
    }

    文檔中說(shuō),$worker是當(dāng)前connection對(duì)象所屬的worker實(shí)例,那么這個(gè)$worker是主進(jìn)程還是子進(jìn)程?遍歷獲取的$con涵蓋所有子進(jìn)程上的連接嗎?

  • phpcreeper 2019-02-15
    1. 位于onXXXX回調(diào)里的代碼都是子進(jìn)程的代碼空間,所以這里的$worker自然是隸屬子進(jìn)程。
    2. 遍歷獲取的$con 只是當(dāng)前子進(jìn)程維持的連接,并不是所有進(jìn)程的。
  • jackie 2019-02-18

    @614:我在用workerman寫(xiě)聊天室,如果設(shè)置多個(gè)子進(jìn)程,那么接受用戶聊天信息后就要群發(fā),而 $connection->worker只能獲取到當(dāng)前進(jìn)程下的連接。那么就需要再去使用channel組件是嗎?

  • phpcreeper 2019-02-18

    @5344:
    1、群發(fā)與否與你采用單進(jìn)程還是多進(jìn)程開(kāi)發(fā)并沒(méi)有什么直接的關(guān)系。
    2、workerman的單進(jìn)程模型下做群發(fā)或單發(fā)處理起來(lái)很簡(jiǎn)單,因?yàn)樗械倪B接都在一個(gè)進(jìn)程內(nèi)接受維護(hù)。
    3、workerman的多進(jìn)程模型開(kāi)發(fā)時(shí),無(wú)論是私聊還是群發(fā),必須考慮多進(jìn)程間的通信,這點(diǎn)正是你提問(wèn)的問(wèn)題所在了,多進(jìn)程通信的手段有很多,比如官方的channel組件、globaldata組件、以及很多消息隊(duì)列組件等等。
    4、最后建議使用gatewayworker, 官方已經(jīng)幫細(xì)節(jié)都實(shí)現(xiàn)好了,拿來(lái)即用;當(dāng)然基于workerman自己搞也完全可以,只不過(guò)利用workerman開(kāi)發(fā)聊天系統(tǒng)需要具備多進(jìn)程模型定制能力,要考慮很多細(xì)節(jié)問(wèn)題。

  • jackie 2019-02-19

    @614:感謝!

年代過(guò)于久遠(yuǎn),無(wú)法發(fā)表回答
??