<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之旅 廣告
                # client和nginx簡易交互過程 - step1:client發起http請求 - step2:dns服務器解析域名得到主機ip - step3:默認端口為80,通過ip+port建立tcp/ip鏈接 - step4:建立連接的tcp/ip三次握手,建立成功發送數據包 - step5:nginx匹配請求 - case .html: 靜態內容,分發靜態內容響應 - case .php: php腳本,轉發請求內容到php-fpm進程,分發php-fpm返回的內容響應 - step6:斷開連接的tcp/ip四次握手,斷開連接 # nginx和php簡易交互過程 - 背景:web server和服務端語言交互依賴的是cgi(Common Gateway Interface)協議,由于cgi效率不高(每次請求都需要重新起一個php-cgi解析器進程,這中間會進行加載php.ini配置等一系列的操作)所以后期產生了fastcgi協議(一種常駐型的cgi協議),php-cgi實現了fastcgi,但是相比php-cgi,php-fpm提供了更好的PHP進程管理方式,可以有效控制內存和進程并可以平滑重載PHP配置 - 流程: - step1:nginx接收到一條http請求,會把環境變量,請求參數轉變成php能懂的php變量 ``` // nginx 配置資料 location ~ \.php$ { include snippets/fastcgi-php.conf; //step1 fastcgi_pass unix:/run/php/php7.0-fpm.sock; } ``` - step2:nginx匹配到.php結尾的訪問通過fastcgi_pass命令傳遞給php-fpm.sock文件,其實這里 的ngnix發揮的是反向代理的角色,把http協議請求轉到fastcgi協議請求 ``` // nginx 配置資料 location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.0-fpm.sock;// step2 } ``` - step3:php-fpm.sock文件會被php-fpm的master進程所引用,這里nginx和php-fpm使用的是 linux的進程間通信方式unix domain socks,是一種基于文件而不是網絡底冊協議的通信方式 - step4:php-fpm的master進程接收到請求后,會把請求分發到php-fpm的子進程,每個php-fpm 子進程都包含一個php解析器 - step5:php-fpm進程處理完請求后返回給nginx # 附錄 - php-fpm進程管理的三種方式 + static: 靜態方式,php-fpm啟動時及啟動最大子進程數,優點是不需要額外的fork子進程過程,適合專門的服務器 - 參數: - pm.max_children: 最大子進程數 + dynamic: 動態方式,配置最大數和啟動數,空閑數,實際使用過程fork進程,優點靈活節省內存,缺點fork過程有性能消耗 - 參數: - pm.max_children: 最大進程數 - pm.start_servers: 啟動數,等于min_spare_servers + (max_spare_servers - min_spare_servers)/2 - pm.min_spare_servers: 最小空閑進程數,如果空閑進程(idle)數小于該值,啟動一個子進程 - pm.max_spare_servers: 最大空閑進程數,如果空閑進程(idle)數大于該值,kill一個子進程 + ondemand: 按需方式, 不啟動子進程,按需fork,優點節省資源 - 參數: - pm.max_children: - pm.process_idle_timeout: 子進程空閑多少秒后被kill
                  <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>

                              哎呀哎呀视频在线观看