首頁  >  文章  >  後端開發  >  nginx與php-fpm的關係

nginx與php-fpm的關係

(*-*)浩
(*-*)浩原創
2019-09-03 13:19:314077瀏覽

nginx與php-fpm的關係

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn