1. 程式人生 > >php的執行原理,淺析web server和PHP的通訊

php的執行原理,淺析web server和PHP的通訊

PHP執行原理

外部請求來到web server(nginx/apache/IIS),web伺服器判斷請求是靜態頁面是PHP請求,如果是靜態頁面,直接根據路徑拿到html檔案,返回給前端;如果是PHP請求,就需要把這個請求交給PHP處理。問題來了,web server 如何把這個請求交給php呢?我們需要定義一種通訊協議,是的兩者之間可以通訊。這個通訊協議就是CGI。

CGI

定義:公共網管。是web server與程式語言(php,python等)的通訊協議。
缺點:一個CGI程序只能處理一個請求,當請求過多時,會消耗巨大的資源和記憶體。

PHP-CGI

定義:是PHP自帶的web server與php的通訊協議。有著和CGI同樣的缺點。

Fast-CGI

定義:可以理解為一個cgi的程序管理器。
特點:常駐記憶體,支援分散式運算。
工作原理:Fast-CGI啟動,自身初始化,並同時啟動多個cgi子程序。當請求到達web server時,web server將cgi的環境配置和標準輸入給Fast-CGI的子程序(這樣的機制就表明Fast-CGI可以平滑啟動,無需重啟服務),當請求處理完成後,子程序告知Fast-CGI,自身進入等待狀態,等待主程序的下一次調遣。
缺點:相對於多執行緒的CGI,會消耗更大的伺服器記憶體。

PHP-FPM

定義:是PHP自帶的Fast-cgi程序管理器,擁有Fast-cgi的一切特點和缺點,只能處理php請求而已。