<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.3.4 請求處理 `fpm_run()`執行后將fork出worker進程,worker進程返回`main()`中繼續向下執行,后面的流程就是worker進程不斷accept請求,然后執行PHP腳本并返回。整體流程如下: * __(1)等待請求:__ worker進程阻塞在fcgi_accept_request()等待請求; * __(2)解析請求:__ fastcgi請求到達后被worker接收,然后開始接收并解析請求數據,直到request數據完全到達; * __(3)請求初始化:__ 執行php_request_startup(),此階段會調用每個擴展的:PHP_RINIT_FUNCTION(); * __(4)編譯、執行:__ 由php_execute_script()完成PHP腳本的編譯、執行; * __(5)關閉請求:__ 請求完成后執行php_request_shutdown(),此階段會調用每個擴展的:PHP_RSHUTDOWN_FUNCTION(),然后進入步驟(1)等待下一個請求。 ```c int main(int argc, char *argv[]) { ... fcgi_fd = fpm_run(&max_requests); parent = 0; //初始化fastcgi請求 request = fpm_init_request(fcgi_fd); //worker進程將阻塞在這,等待請求 while (EXPECTED(fcgi_accept_request(request) >= 0)) { SG(server_context) = (void *) request; init_request_info(); //請求開始 if (UNEXPECTED(php_request_startup() == FAILURE)) { ... } ... fpm_request_executing(); //編譯、執行PHP腳本 php_execute_script(&file_handle); ... //請求結束 php_request_shutdown((void *) 0); ... } ... //worker進程退出 php_module_shutdown(); ... } ``` worker進程一次請求的處理被劃分為5個階段: * __FPM_REQUEST_ACCEPTING:__ 等待請求階段 * __FPM_REQUEST_READING_HEADERS:__ 讀取fastcgi請求header階段 * __FPM_REQUEST_INFO:__ 獲取請求信息階段,此階段是將請求的method、query stirng、request uri等信息保存到各worker進程的fpm_scoreboard_proc_s結構中,此操作需要加鎖,因為master進程也會操作此結構 * __FPM_REQUEST_EXECUTING:__ 執行請求階段 * __FPM_REQUEST_END:__ 沒有使用 * __FPM_REQUEST_FINISHED:__ 請求處理完成 worker處理到各個階段時將會把當前階段更新到`fpm_scoreboard_proc_s->request_stage`,master進程正是通過這個標識判斷worker進程是否空閑的。
                  <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>

                              哎呀哎呀视频在线观看