這個運行模式應該是好久之前了吧,不過我也沒用過,只是從網上資料瞭解了下,書面上的解釋就是:cgi是web服務器與機器上的其餘程序進行通訊的一個接口,其餘程序能夠是任何語言,它經過cgi這個接口從web服務器得到輸入,而後把運行的結果經過cgi這個接口傳輸給web服務器,而web服務器把這個結果發送給瀏覽器.(這個解釋好渣,仍是看下面的好了)
php
而在php上解釋就是web server將用戶請求以消息方式交給php獨立進程;這些應該就是它的工做模式,具體的貌似我也說不清楚,下面是摘自百度的一段話: web
它是一段程序,通俗的講CGI就象是一座橋,把網頁和WEB服務器中的執行程序鏈接起來,它把HTML接收的指令傳遞給服務器的執 行程序,再把服務器執行程序的結果返還給HTML頁。CGI 的跨平臺性能極佳,幾乎能夠在任何操做系統上實現。 CGI方式在遇到鏈接請求(用戶 請求)先要建立cgi的子進程,激活一個CGI進程,而後處理請求,處理完後結束這個子進程。這就是fork-and-execute模式。因此用cgi 方式的服務器有多少鏈接請求就會有多少cgi子進程,子進程反覆加載是cgi性能低下的主要緣由。都會當用戶請求數量很是多時,會大量擠佔系統的資源如內 存,CPU時間等,形成效能低下。
我以爲更靠譜點的解釋是:cgi就是Apache在遇到PHP腳本的時候會將PHP程序提交給CGI應用程序(php-cgi.exe)解釋,解釋以後的結果返回給Apache,而後再返回給相應的請求用戶. shell
以FastCGI的方式運行。這種形式是CGI的增強版本,CGI是單進程,多線程的運行方式,程序執行完成以後就會銷燬,因此每次都須要加載配置和環境變量fork-and-execute(建立-執行)。而FastCGI則不一樣,FastCGI 像是一個常駐 (long-live) 型的 CGI,它能夠一直執行着,只要激活後,不會每次都要花費時間去 fork 一次。FastCGI進程管理器自身初始化,啓動多個CGI解釋器進程 (在任務管理器中可見多個php-cgi.exe)並等待來自Web Server的鏈接。它還支持分佈式的運算, 即 FastCGI 程序能夠在網站服務器之外的主機上執行而且接受來自其它網站服務器來的請求。 windows
這個東西據說是微軟本身搞出來的,真是夠任性的。不過也沒用過。摘下網上的解釋: 瀏覽器
ISAPI即Internet Server Application Program Interface,是微軟提供的一套面向Internet服務的API接口 一個ISAPI的DLL,能夠在被用戶請求激活後長駐內存,等待用戶的另外一個請求,還能夠在一個DLL裏設置多個用戶請求處理函數,此外,ISAPI的DLL應用程序和WWW服務器處於同一個進程中,效率要顯著高於CGI。(因爲微軟的排他性,只能運行於windows環境)
這個是PHP的命令行執行模式,這個也沒玩過 ==!不過 服務器
php filaname
哈哈,這個貌似也算是。嗯,這個運行模式對於如今來講沒什麼好解釋的,先這樣! 多線程
這個應該就是你們最經常使用的運行模式了吧,這個其實就是將PHP集成到APACHE服務器,同一個進程運行。 分佈式