那nginx是怎么調用php的呢?先看下面的nginx中關于php的配置
location ~ /.php$ { root /webpath; fastcgi_pass 127.0.0.1:9000; … ... }
這個location指令把以php為文件后綴的請求,交給127.0.0.1:9000處理。我想你看到這個應該猜到了,這是一個C/S架構東西。 而這里的IP地址和端口(127.0.0.1:9000)就是fastcgi進程監聽的IP地址和端口。fastcgi是一個可伸縮地、高速地在http server和動態腳本語言間通信的接口。多數流行的http server都支持fastcgi,包括apache、nginx和lighttpd等。同時,fastcgi也被許多腳本語言支持,其中就有php。
那這個fastcgi的配置IP和端口從何而來呢?在php-fpm.conf中可以看到如下:
listen = 127.0.0.1:9000 #這個表示php的fastcgi進程監聽的ip地址以及端口pm.start_servers = 2php-fpm作為fastcgi的進程管理器,可以有效控制內存和進程,并且平滑重載php配置。php5.3以后,php-fpm被集成到php的core中,默認安裝,無須配置。
fastcgi進程管理器php-fpm自身初始化,啟動主進程php-fpm和啟動start_servers個fastcgi子進程。主進程php-fpm主要是管理fastcgi子進程,監聽9000端口,fastcgi子進程等待請求。當客戶端請求到達nginx時,nginx通過location指令,將所有以php為后綴的文件都交給 127.0.0.1:9000 來處理。php-fpm選擇并連接到一個fastcgi子進程,并將html' target='_blank'>環境變量和標準輸入發送到fastcgi子進程。fastcgi子進程完成處理后將標準輸出和錯誤信息返回。當fastcgi子進程關閉連接時,請求便告處理完成,等待下次處理。
普通的cgi模式是進程 但存在一個問題 每來一個請求 就必須fork一個進程 導致效率緩慢
所以才有了 fast cgi fpm就是 fast cgi manager
fpm的模式也是進程 但他會prefork 就是服務啟動的時候 先fork一部分進程等待處理請求。
相關推薦:
Nginx和PHP-FPM的啟動、重啟、停止腳本
設置nginx和PHP上傳文件大小限制
mac下安裝nginx和php_PHP教程
以上就是nginx和php之間工作原理的詳細內容,更多請關注 其它相關文章!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答
圖片精選