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

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 同步阻塞與異步非阻塞適用場景 ## 異步的優勢 * 高并發,同步阻塞IO模型的并發能力依賴于進程/線程數量,例如 php-fpm開啟了200個進程,理論上最大支持的并發能力為200。如果每個請求平均需要100ms,那么應用程序就可以提供2000qps。異步非阻塞的并發能力幾乎是無限的,可以發起或維持大量并發TCP連接 * 無IO等待,同步模型無法解決IOWait很高的場景,如上述例子每個請求平均要10s,那么應用程序就只能提供20qps了。而異步程序不存在IO等待,所以無論請求要花費多長時間,對整個程序的處理能力沒有任何影響 ## 同步的優勢 * 編碼簡單,同步模式編寫/調試程序更輕松 * 可控性好,同步模式的程序具有良好的過載保護機制,如在下面的情況異步程序就會出問題 * Accept保護,同步模式下一個TCP服務器最大能接受 進程數+Backlog 個TCP連接。一旦超過此數量,Server將無法再接受連接,客戶端會連接失敗。避免服務器Accept太多連接,導致請求堆積 ## Swoole異步與同步的選擇 Swoole不僅支持異步,還支持同步。什么情況下使用同步,什么情況下使用異步。這里說明一下。 * 我們不贊成用異步回調的方式去做功能開發,傳統的PHP同步方式實現功能和邏輯是最簡單的,也是最佳的方案。像node.js這樣到處callback,只是犧牲可維護性和開發效率。 * 但有些時候很適合用異步,比如FTP、聊天服務器,smtp,代理服務器等等此類以通信和讀寫磁盤為主,功能和業務邏輯其次的服務器程序。 “PHP的擴展函數API全是同步的”,這個說法并不正確,實際上同步阻塞的地方主要是網絡調用,文件讀寫。例如mysql_query需要與mysql數據庫服務器通信,curl需要調用網絡,file_get_contents需要讀寫文件,以及其他fopen/fwrite/fread/fgets/fputs這些都是阻塞的API。除此之外PHP的array/string/mbstring等函數是非阻塞的。 swoole提供了異步的socket客戶端,異步的mysql,而且1.6.12還提供了異步文件讀寫和異步DNS查詢的功能。另外還提供了task/finish的API,完全可以解決阻塞IO問題。
                  <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>

                              哎呀哎呀视频在线观看