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

workerman里的進程與子進程

jackie

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

5885 1 1
1個回答

phpcreeper

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

  • jackie 2019-01-24

    是不是這樣:
    workerman會有一個主進程,然后所有的worker實例里設置的count個進程全部都是子進程

  • phpcreeper 2019-01-24

    準確的說:

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

    @614:嗯嗯 懂了。謝謝!

  • phpcreeper 2019-01-24

    @5344 不客氣

  • jackie 2019-02-15

    @614:想追問個問題,假如worker->count設定4個子進程編號0123,啟動后先后進來10個連接,如何分配給4個子進程,是均衡分配,還是一個子進程滿之后再由第二個子進程來處理??

  • phpcreeper 2019-02-15
    1. 默認不會均衡分配,會由系統(tǒng)內核調度某個空閑的進程處理連接。
    2. 如果想達到均衡分配,需要開啟$worker->reusePort = true
  • jackie 2019-02-15

    @614:

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

    文檔中說,$worker是當前connection對象所屬的worker實例,那么這個$worker是主進程還是子進程?遍歷獲取的$con涵蓋所有子進程上的連接嗎?

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

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

  • phpcreeper 2019-02-18

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

  • jackie 2019-02-19

    @614:感謝!

年代過于久遠,無法發(fā)表回答
??