<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智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # swoole_process->useQueue 啟用消息隊列作為進程間通信。 ```php bool swoole_process->useQueue(int $msgkey = 0, int $mode = 2); ``` useQueue方法接受2個可選參數。 * `$msgkey`是消息隊列的key,默認會使用`ftok(__FILE__, 1)`作為KEY * `$mode`通信模式,默認為`2`,表示爭搶模式,所有創建的子進程都會從隊列中取數據 * 如果創建消息隊列失敗,會返回`false`。可使用`swoole_strerror(swoole_errno())` 得到錯誤碼和錯誤信息。 > 使用模式`2`后,創建的子進程無法進行單獨通信,比如發給特定子進程。 > `$process`對象并未執行`start`,也可以執行`push`/`pop`向隊列推送/提取數據 > 消息隊列通信方式與管道不可共用。消息隊列不支持`EventLoop`,使用消息隊列后只能使用同步阻塞模式 ``` CygWin 環境不支持消息隊列,請勿在此環境下使用 ``` 非阻塞 ----- 在`1.9.2`或更高版本中增加了`swoole_process::IPC_NOWAIT`的支持,可將隊列設置為非阻塞。在非阻塞模式下,隊列已滿調用`push`方法、隊列已空調用`pop`方法時將不再阻塞立即返回。 ```php //設置為非阻塞模式 $process->useQueue($key, $mode | swoole_process::IPC_NOWAIT); ``` 示例 ```php <?php $worker_num = 2; $process_pool = []; $process= null; $pid = posix_getpid(); function sub_process(swoole_process $worker) { sleep(1); //防止父進程還未往消息隊列中加入內容直接退出 echo "worker ".$worker->pid." started".PHP_EOL; while($msg = $worker->pop()){ if ($msg === false) { break; } $sub_pid = $worker->pid; echo "[$sub_pid] msg : $msg".PHP_EOL; sleep(1);//這里的sleep模擬任務耗時,否則可能1個worker就把所有信息全接受了 } echo "worker ".$worker->pid." exit".PHP_EOL; $worker->exit(0); } $customMsgKey = 1; $mod = 2 | swoole_process::IPC_NOWAIT;//這里設置消息隊列為非阻塞模式 //創建worker進程 for($i=0;$i<$worker_num; $i++) { $process=new swoole_process('sub_process'); $process->useQueue($customMsgKey, $mod); $process->start(); $pid = $process->pid; $process_pool[$pid] = $process; } $messages = [ "Hello World!", "Hello Cat!", "Hello King", "Hello Leon", "Hello Rose" ]; //由于所有進程是共享使用一個消息隊列,所以只需向一個子進程發送消息即可 $process = current($process_pool); foreach ($messages as $msg) { $process->push($msg); } swoole_process::wait(); swoole_process::wait(); echo "master exit".PHP_EOL; ```
                  <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>

                              哎呀哎呀视频在线观看