博客 / 詳情

返回

FastCGI 在 PHP 與 Nginx 間起什麼作用?

一:什麼是 CGI?
服務器端編程語言如(如php/java)與Web服務器之間傳遞信息的協議,約定了http頭、表單等信息的傳遞接口;

二:FastCGI 是什麼?
本質上是協議,升級版的 CGI,回到題目,起什麼作用,規範作用,所有協議的作用都是規範。
注意不是進程,Nginx 根據此協議拓展了一個模塊,也叫FastCGI,但是重要的話説三遍,
FastCGI 與 CGI 都是協議,不是進程;
FastCGI 與 CGI 都是協議,不是進程;
FastCGI 與 CGI 都是協議,不是進程;
相比於CGI,它的優點有如下:
1、監聽,不用每收到一個請求就加載配置文件,臨時起個進程處理,而是常駐在內存的進程,一有請求就能立即處理;
2、一 master 多 worker,和 Nginx類似,worker 與機器的內核數量相等且一一綁定的話,會提高性能,有效地利用 CPU 資源;
3、平滑啓動,這一點 Nginx 也具備,當修改配置文件後,worker 會及時地更新配置。

三:那麼,php-fpm 是什麼?
是一個命令行的工具,也叫進程管理器,運行時會有若干個 php-fpm 進程。
其特點如下
1、實現了 FastCGI 協議;
2、用來管理 php 解釋器(php-cgi)的,
而 FastCGI 協議的優點,上面三點已經講得很明確了。

畫外音:
是不是有點繞,就比如説你(php解釋器)不聽話,老師(計算機)怎麼管都管不利索,然後呢,老師説你要不再不聽説,就告訴你爸(FastCGI),讓你爸收拾你,你一想萬一被老爸一腳踹牆根(老師能做到,能實現 FastCGI 協議),那還得了,就乖乖聽話,你就從叛逆少年就變成好好學生了,從此平步青雲,迎娶白富美,走上人生巔峯,拯救全人類,最後開着地球去銀河系旅遊,好了,老闆叫我,先把地球停這,你們繼續開。

關於 Nginx 與 服務器端編程語言的交互
Nginx 要想與服務器端腳本語言傳遞信息,就得用 FastCGI 模塊
配置詳情:http://www.nginx.cn/doc/stand...

關於 Nginx 的反向代理與負載均衡;
這兩個一般是放在一塊説的,反向代理不單獨配置。
配置詳情:http://www.nginx.cn/doc/stand...

如果想要更自由地配置 Nginx 怎麼辦?
有辦法,Nginx 模塊大全在此,隨便用,良心推薦。
Nginx 模塊大全:http://www.nginx.cn/doc/

拓展問題:
Nginx 是一個進程,php-fpm 也是一個進程,他們之間是通過什麼方式通信的呢?

進程間的通信都有哪些,應用場景分別是什麼?哈哈,至少三種(管道、信號、socket);

數據結構有什麼用?(太 TM 有用,每本計算機相關的專業書不提這個,就像會死)。

作為一個 PHP 程序員,應該去學數據結構嗎?
覺得應該。而且應該用 C 學,因為只有不斷學習,才能突破40歲就沒用的魔咒,很多人説程序員40歲失業就找不到工作,我就不信,成為專家,在40歲還能為生計發愁?

各位怎麼想的,如果有錯誤的地方,幫忙糾正一下。

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.