<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國際加速解決方案。 廣告
                # Reactor、Worker、TaskWorker的關系 三種角色分別的職責是: Reactor線程 ------ * 負責維護客戶端`TCP`連接、處理網絡`IO`、處理協議、收發數據 * 完全是**異步非阻塞**的模式 * 全部為`C`代碼,除`Start`/`Shudown`事件回調外,不執行任何PHP代碼 * 將`TCP`客戶端發來的數據緩沖、拼接、拆分成完整的一個請求數據包 * `Reactor`以多線程的方式運行 Worker進程 ---- * 接受由`Reactor`線程投遞的請求數據包,并執行`PHP`回調函數處理數據 * 生成響應數據并發給`Reactor`線程,由`Reactor`線程發送給`TCP`客戶端 * 可以是異步非阻塞模式,也可以是同步阻塞模式 * `Worker`以多進程的方式運行 TaskWorker進程 ---- * 接受由`Worker`進程通過`swoole_server->task/taskwait`方法投遞的任務 * 處理任務,并將結果數據返回(`swoole_server->finish`)給`Worker`進程 * 完全是**同步阻塞**模式 * `TaskWorker`以多進程的方式運行 關系 ---- 可以理解為`Reactor`就是`nginx`,`Worker`就是`php-fpm`。`Reactor`線程異步并行地處理網絡請求,然后再轉發給`Worker`進程中去處理。`Reactor`和`Worker`間通過`UnixSocket`進行通信。 在`php-fpm`的應用中,經常會將一個任務異步投遞到`Redis`等隊列中,并在后臺啟動一些`php`進程異步地處理這些任務。`Swoole`提供的`TaskWorker`是一套更完整的方案,將任務的投遞、隊列、`php`任務處理進程管理合為一體。通過底層提供的`API`可以非常簡單地實現異步任務的處理。另外`TaskWorker`還可以在任務執行完成后,再返回一個結果反饋到`Worker`。 `Swoole`的`Reactor`、`Worker`、`TaskWorker`之間可以緊密的結合起來,提供更高級的使用方式。 一個更通俗的比喻,假設`Server`就是一個工廠,那`Reactor`就是銷售,接受客戶訂單。而`Worker`就是工人,當銷售接到訂單后,`Worker`去工作生產出客戶要的東西。而`TaskWorker`可以理解為行政人員,可以幫助`Worker`干些雜事,讓`Worker`專心工作。 > 底層會為`Worker`進程、`TaskWorker`進程分配一個唯一的`ID` > 不同的`Worker`和`TaskWorker`進程之間可以通過`sendMessage`接口進行通信
                  <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>

                              哎呀哎呀视频在线观看