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

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # swoole_process::__construct 創建子進程 --- ```php swoole_process::__construct(callable $function, $redirect_stdin_stdout = false, $pipe_type = 2); ``` * `$function`,子進程創建成功后要執行的函數,底層會自動將函數保存到對象的`callback`屬性上。如果希望更改執行的函數,可賦值新的函數到對象的`callback`屬性 * `$redirect_stdin_stdout`,重定向子進程的標準輸入和輸出。啟用此選項后,在子進程內輸出內容將不是打印屏幕,而是寫入到主進程管道。讀取鍵盤輸入將變為從管道中讀取數據。默認為阻塞讀取。 * `$pipe_type`,管道類型,啟用`$redirect_stdin_stdout`后,此選項將忽略用戶參數,強制為`1`。如果子進程內沒有進程間通信,可以設置為 `0` 管道類型 ---- * `0`:不創建管道 * `1`:創建`SOCK_STREAM`類型管道 * `2`:創建`SOCK_DGRAM`類型管道 * 啟用`$redirect_stdin_stdout` 后,此選項將忽略用戶參數,強制為`1` > `swoole_process` ( 或 `Swoole\Process`) 對象在銷毀時會自動關閉管道,子進程內如果監聽了管道會收到CLOSE事件 > 使用swoole_process作為監控父進程,創建管理子process時,父類必須注冊信號SIGCHLD對退出的進程執行wait,否則子process一旦被kill會引起父process exit 在子進程中創建 Server ---- 例 1: 可以在 `swoole_process` 創建的子進程中使用 `swoole_server`,但為了安全必須在`$process->start` 創建進程后,調用 `$worker->exec()` 執行。代碼如下: ```php <?php $process = new swoole_process('callback_function', true); $pid = $process->start(); function callback_function(swoole_process $worker) { $worker->exec('/usr/local/bin/php', array(__DIR__.'/swoole_server.php')); } swoole_process::wait(); ``` 例 2:使用匿名函數作為進程邏輯,并實現了一個簡單的父子進程通訊 ```php <?php $process = new swoole_process(function (swoole_process $process) { $process->write('Hello'); }, true); $process->start(); usleep(100); echo $process->read(); // 輸出 Hello ``` IO 線程池問題 ---- 由于`Swoole`的異步文件`IO`使用了線程池,在使用了這些`API`之后再創建`Process`可能會出現非常復雜的帶線程`fork`問題。因此請勿在使用異步文件`IO`函數后創建`Process`。 > `2.1.4`/`1.10.4`或更高版本已經禁止了這種行為,底層檢測到已創建線程池再執行`new Process`會拋出致命錯誤
                  <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>

                              哎呀哎呀视频在线观看