nginx 如何解析php文件php-fpm的解釋

nginx 如何解析php文件php-fpm的解釋

  • 首先從nginx提及,nginx的配置文件,/usr/local/nginx/conf/nginx.conf
location ~ \.php {
            root           /nginx;
            fastcgi_pass   127.0.0.1:9000;  //ip+port方式
           ;  fastcgi_pass unix:/tmp/php-cgi.sock;【unxi domain socket形式】  這種是進程之間的訪問,比tcp/ip的要快
            fastcgi_index  index.php;
          fastcgi_split_path_info ^(.+\.php)(.*)$;     
         fastcgi_param PATH_INFO $fastcgi_path_info;    
            fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
           include /usr/local/etc/nginx/fastcgi.conf;
        
        }

從上面能夠看出來 ,nginx經過fastcgi_pass命令將請求轉發給fastcgi 即php-fpm;

當web server收到/index.php這個請求後,會啓動對應的CGI程序,這裏就是PHP的解析器。接下來PHP解析器會解析php.ini文件,(php-fpm 如何解析php.ini 文件的? 新版PHP已經集成php-fpm了,再也不是第三方的包了,推薦使用。 只須要在安裝的時候/configure --prefix=/usr/local/php  --enable-fpm 開啓支持php-fpm就能夠了)初始化執行環境,而後處理請求,再以規定CGI規定的格式返回處理後的結果,退出進程。web server再把結果返回給瀏覽器。

知識填充

  • CGI是爲了保證web server傳遞過來的數據是標準格式的,標準的CGI對每一個請求都會解析php.ini文件,初始化執行環境,因此處理每一個時間的時間會比較長。php

  • Fastcgi是用來提升CGI程序性能的,是CGI開放擴展,其主要行爲是將CGI解釋器進程保持在內存中並所以得到較高的性能。是優化版的cgi;fastcgi 是一個與平臺無關,與語言無關,任何語言只要按照它的接口來實現,就能實現本身語言的fastcgi能力和web server 通信。前端

  • 首先,Fastcgi會先啓一個master,解析配置文件,初始化執行環境,而後再啓動多個worker。當請求過來時,master會傳遞給一個worker,而後當即能夠接受下一個請求。這樣就避免了重複的勞動,效率天然是高。並且當worker不夠用時,master能夠根據配置預先啓動幾個worker等着;固然空閒worker太多時,也會停掉一些,這樣就提升了性能,也節約了資源。這就是fastcgi的對進程的管理。當HTTP服務器遇到動態請求時,會將請求轉發給FastCGI進程,FastCGI進程執行動態腳本後再將結果返回給HTTP服務器,nginx

--------------------以上,fastcig ,cgi都是獨立於語言的;web

  • php-cgi 就是php的解釋器 php-cgi只是個CGI程序,php-cgi是php提供給web serve也就是http前端服務器的cgi協議接口程序,,他本身自己只能解析請求,返回結果,不會進程管理.因此就出現了一些可以調度php-cgi進程的程序,好比說由lighthttpd分離出來的spawn-fcgi。好了PHP-FPM也是這麼個東東,apache

  • php-fpm是一個實現了FastCGI(協議)的程序,php-fpm是php提供給web serve也就是http前端服務器的fastcgi協議接口程序,管理對象是php-cgi,PHP內核集成了PHP-FPM以後就方便多了,使用--enalbe-fpm這個編譯參數便可。
    瀏覽器

  • 整個過程 nginx接收php文件的請求後,經過fastcgi_pass命令將請求發送給php-fpm---php-cgi的進程管理器(在這中間,必須經過fastCGI進程管理器,是優化後的cgi,經過master主進程和work子進程,其實就是將請求的格式規範化),就是php-cgi的進程管理者,最後仍是有php-cgi去完成解析bash

瞭解apache如何調用php 請移步https://blog.csdn.net/u011280342/article/details/78121132服務器

相關文章
相關標籤/搜索