<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # Process\\Pool->start [TOC] 啟動工作進程。 ~~~ function Process\Pool::start() : bool; ~~~ * 啟動成功,當前進程進入`wait`狀態,管理工作進程 * 啟動失敗,返回`false`,可使用`swoole_errno`獲取錯誤碼 ~~~ $workerNum = 10; $pool = new Swoole\Process\Pool($workerNum); $pool->on("WorkerStart", function ($pool, $workerId) { echo "Worker#{$workerId} is started\n"; $redis = new Redis(); $redis->pconnect('127.0.0.1', 6379); $key = "key1"; while (true) { $msgs = $redis->brpop($key, 2); if ( $msgs == null) continue; var_dump($msgs); } }); $pool->on("WorkerStop", function ($pool, $workerId) { echo "Worker#{$workerId} is stopped\n"; }); $pool->start(); ~~~ ## 進程管理 * 某個工作進程遇到致命錯誤、主動退出時管理器會進行回收,避免出現僵尸進程 * 工作進程退出后,管理器會自動拉起、創建一個新的工作進程 * 主進程收到`SIGTERM`信號時將停止`fork`新進程,并`kill`所有正在運行的工作進程 * 主進程收到`SIGUSR1`信號時將將逐個`kill`正在運行的工作進程,并重新啟動新的工作進程 ## 信號處理 底層僅設置了主進程(管理進程)的信號處理,并未對`Worker`工作進程設置信號,需要開發者自行實現信號的監聽。 * 工作進程為異步模式,請使用`Swoole\Process::signal`監聽信號 * 工作進程為同步模式,請使用`pcntl_signal`和`pcntl_signal_dispatch`監聽信號 在工作進程中應當監聽`SIGTERM`信號,當主進程需要終止該進程時,會向此進程發送`SIGTERM`信號。如果工作進程未監聽`SIGTERM`信號,底層會強行終止當前進程,造成部分邏輯丟失。 ~~~ $pool->on("WorkerStart", function ($pool, $workerId) { $running = true; pcntl_signal(SIGTERM, function () use (&amp;$running) { $running = false; }); echo "Worker#{$workerId} is started\n"; $redis = new Redis(); $redis->pconnect('127.0.0.1', 6379); $key = "key1"; while ($running) { $msg = $redis->brpop($key); pcntl_signal_dispatch(); if ( $msgs == null) continue; var_dump($msg); } }); ~~~
                  <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>

                              哎呀哎呀视频在线观看