<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # onWorkerStart [TOC] 此事件在`Worker`進程/`Task`進程啟動時發生。這里創建的對象可以在進程生命周期內使用。原型: ~~~ function onWorkerStart(swoole_server $server, int $worker_id); ~~~ * `onWorkerStart`/`onStart`是并發執行的,沒有先后順序 * 可以通過`$server->taskworker`屬性來判斷當前是`Worker`進程還是`Task`進程 * 設置了`worker_num`和`task_worker_num`超過`1`時,每個進程都會觸發一次`onWorkerStart`事件,可通過判斷`$worker_id`區分不同的工作進程 * 由 worker 進程向 task 進程發送任務,task 進程處理完全部任務之后通過onFinish回調函數通知 worker 進程。例如,我們在后臺操作向十萬個用戶群發通知郵件,操作完成后操作的狀態顯示為發送中,這時我們可以繼續其他操作。等郵件群發完畢后,操作的狀態自動改為已發送。 ## 注意事項 * 發生致命錯誤或者代碼中主動調用`exit`時,`Worker`/`Task`進程會退出,管理進程會重新創建新的進程。這可能導致死循環,不停地創建銷毀進程 下面的示例用于為`Worker`進程/`Task`進程重命名。 ~~~ $serv->on('WorkerStart', function ($serv, $worker_id){ global $argv; if($worker_id >= $serv->setting['worker_num']) { swoole_set_process_name("php {$argv[0]} task worker"); } else { swoole_set_process_name("php {$argv[0]} event worker"); } }); ~~~ 如果想使用`Reload`機制實現代碼重載入,必須在`onWorkerStart`中`require`你的業務文件,而不是在文件頭部。在`onWorkerStart`調用之前已包含的文件,不會重新載入代碼。 > 可以將公用的、不易變的php文件放置到`onWorkerStart`之前。這樣雖然不能重載入代碼,但所有`Worker`是共享的,不需要額外的內存來保存這些數據。 > `onWorkerStart`之后的代碼每個進程都需要在內存中保存一份 * `$worker_id`是一個從`[0-$worker_num)`區間內的數字,表示這個`Worker`進程的`ID` * `$worker_id`和進程`PID`沒有任何關系,可使用`posix_getpid`函數獲取`PID` ## 協程支持 `2.1.0`版本`onWorkerStart`回調函數中創建了協程,在`onWorkerStart`可以調用協程`API`
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看