<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之旅 廣告
                # 1.7.2 swoole\_process多進程模塊的使用 [TOC] 1.7.2 swoole增加了多進程管理模塊來替代PHP的pcntl,它相比pcntl的不同點是: * swoole\_process提供了pcntl沒有的進程間通信 * swoole\_process支持重定向標準輸入和輸出,在子進程內echo或者讀鍵盤輸入可以被重定向為從管道中取數據 * 子進程可以異步化 ## 進程間通信(IPC) 子進程和父進程之間可以通過管道通信,傳遞數據。IPC在多進程編程中經常用到,PHP的pcntl模塊沒有提供IPC的功能,所以功能有局限。而swoole\_process提供了這些功能,并且封裝了接口。只需調用接口即可完成進程間通信。 ~~~ $worker_num = 8; for($i = 0; $i < $worker_num; $i++) { $process = new swoole_process('callback_function', $redirect_stdout); $pid = $process->start(); $workers[$pid] = $process; } function callback_function(swoole_process $worker) { //echo "Worker: start. PID=".$worker->pid."\n"; //recv data from master $recv = $worker->read(); echo "From Master: $recv\n"; //send data to master $worker->write("hello master\n"); sleep(2); $worker->exit(0); } ~~~ read/write 2個方法就是向管道內讀寫數據。主進程內可以通過write/read 向子進程寫入,讀取數據。 ## 標準輸入/輸出重定向 swoole\_process支持了標準輸入輸出的重定向,子進程內echo時,會自動寫入管道,而不是打印到屏幕。 ## 子進程異步 swoole\_process創建的子進程可以是同步的,也可以是異步的。 ~~~ function callback_function_async(swoole_process $worker) { //echo "Worker: start. PID=".$worker->pid."\n"; //recv data from master $GLOBALS['worker'] = $worker; swoole_event_add($worker->pipe, function($pipe) { $worker = $GLOBALS['worker']; $recv = $worker->read(); echo "From Master: $recv\n"; //send data to master $worker->write("hello master\n"); sleep(2); $worker->exit(0); }); } ~~~ 可以將管道加入到swoole\_event中即可實現異步的進程間通信,另外子進程內可以使用swoole\_timer/swoole\_client/swoole\_async這些異步的API。或者使用swoole\_event\_add直接操作swoole的EventLoop。 ## 其他 swoole\_process 1.7.3 還會加入進程CPU親和設置、守護進程化、使用消息隊列/共享內存Channel等特性。
                  <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>

                              哎呀哎呀视频在线观看