<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之旅 廣告
                [TOC] # FPM模式的生命周期 >作為php應用程序開發者,我們只需要了解以下知識即可,不理解不影響對Swoole的學習。 通過我們之前對運行模式的了解,我們知道FPM是常駐內存的進程,所以其模塊初始化只做一次,便進入循環,而模塊關閉在進程退出時也只做一次。這樣更方便我們了解FPM的生命周期: 1)調用php_module_startup,加載所有模塊。 2)進入循環,調用fcgi_accept_request實際調用的是accept,阻塞等待請求;如果有請求進來,會被喚起,進入php_request_startup,初始化請求。為了防止多個進程對accept進行搶占,出現“驚群”情況,增加了鎖機制: ```C FCGI_LOCK(req->listen_socket); req->fd = accept(listen_socket, (struct sockaddr *)&sa, &len); FCGI_UNLOCK(req->listen_socket); ``` >驚群效應是指多進程(多線程)在同時阻塞等待同一個事件的時候(休眠狀態),如果等待的這個事件發生,那么它就會喚醒等待的所有進程(或者線程),但是最終卻只能有一個進程(線程)獲得這個時間的“控制權”,對該事件進行處理,而其他進程(線程)獲取“控制權”失敗,只能重新進入休眠狀態,這種現象和性能浪費就叫做驚群效應。 >FCGI_LOCK和FCGI_UNLOCK在Linux下已經沒有實現了,Linux2.6內核上,阻塞版的accept系統調用已經不存在“驚群”了。大概的處理方式就是,當內核接收到一個客戶連接后,**只會喚醒等待隊列上的第一個進程或線程**。 3)進入php_execute_script,對腳本執行編譯。 4)調用php_request_shutdown關閉請求,繼續進入循環。 5)如果進程退出,調用php_module_shutdown關閉所有模塊。 6)如果請求次數大于max_requests,則跳轉5。
                  <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>

                              哎呀哎呀视频在线观看