CGI是幹嗎的?php
CGI是爲了保證web server傳遞過來的數據是標準格式的,方便CGI程序的編寫者。web server(好比說nginx)只是內容的分發者。好比,若是請求的是/index/html,那麼web server會去文件系統找到這個文件,發送給瀏覽器,這裏分發的是靜態數據。若是,請求的是/index.php,根據配置文件,nginx知道這不是一個靜態文件,須要去找PHP解析器來處理,那麼他會 把這個請求丟給PHP解釋器,可是他如何跟PHP解釋器進行溝通呢?CGI就是規定了他們之間溝通的協議。當PHP解析器處理完請求同理再以規定的CGUI格式返回處理後的結果,退出進程。web server 再將結果返回給瀏覽器。html
PHP-CGI是什麼呢?nginx
PHP-CGI是PHP自帶的FastCGI管理器。已經棄用了,緣由在於修改php.ini必需要重啓才能生效,不支持平滑重啓;另一個緣由在於,殺死php-cgi進程後,php就不能運行了。(PHP-FPM和Spawn-FCGI就沒有這個問題,守護進程會平滑重新生成新的子進程。)web
FASTCGI是什麼?瀏覽器
Fastcgi是用來提升CGI程序性能的。那麼CGI程序的性能問題在哪呢?"PHP解析器會解析php.ini文件,初始化執行環境",就是這裏了。標準的CGI對每一個請求都會執行這些步驟,因此處理每一個時間的時間會比較長。這明顯不合理嘛!那麼Fastcgi是怎麼作的呢?其主要行爲是將CGI解釋器進程保持在內存中並所以得到較高的性能。性能
PHP-FPM是什麼呢?spa
PHP-FPM是一個PHP FASTCGI管理器,只能用於PHP。server