php-fpm就是fastCGI進程管理器(推薦學習:web前端影片教學)
1、Web Server啟動時載入FastCGI進程管理器(IIS ISAPI或Apache Module)
2、FastCGI進程管理器本身初始化,啟動多個CGI解釋器進程(可見多個php-cgi)並等待來自Web Server的連線。
3、當客戶端要求到達Web Server時,FastCGI進程管理器選擇並連接到一個CGI解釋器。 Web server將CGI環境變數和標準輸入傳送到FastCGI子進程php-cgi。
4、FastCGI子進程完成處理後將標準輸出和錯誤訊息從相同連線傳回Web Server。當FastCGI子程序關閉連線時,請求便告處理完成。 FastCGI子進程接著等待並處理來自FastCGI進程管理器(運行在Web Server中)的下一個連線。在CGI模式中,php-cgi在此便退出了。
在上述情況中,你可以想像CGI通常有多慢。每一個Web請求PHP都必須重新解析php.ini、重新載入全部擴充並重初始化全部資料結構。使用FastCGI,所有這些都只在進程啟動時發生一次。一個額外的好處是,持續資料庫連線(Persistent database connection)可以運作。
FastCGI 是一個協議,它是應用程式和WEB伺服器連接的橋樑。 Nginx並非直接與PHP-FPM通信,而是將請求透過FastCGI交給PHP-FPM處理。
location ~ \.php$ { try_files $uri /index.php =404; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_buffers 16 16k; fastcgi_buffer_size 32k; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
這裡 fastcgi_pass 就是把所有 php 請求轉寄給 php-fpm 處理。透過 netstat 指令可以看到,127.0.0.1:9000 這個連接埠上執行的程序就是 php-fpm。
以上是nginx與php-fpm的關係的詳細內容。更多資訊請關注PHP中文網其他相關文章!