首頁  >  文章  >  後端開發  >  fastcgi與cgi有什麼差別?

fastcgi與cgi有什麼差別?

不言
不言轉載
2019-03-21 15:51:262743瀏覽

這篇文章帶給大家的內容是關於fastcgi與cgi有什麼不同?有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

現在的CGI基本上沒人使用,不安全以及效能極度低下,越來越多的使用web內建擴充、fastCGI。例如微軟iis的ISAPI,apache的php模組,nginx的php-cgi。 CGI、內建模組、fastcgi這三種效能最好的要屬於fast_cgi速度最快,但是需要額外的進程。解析來看看CGI和FASTCGI有什麼不同.

CGI方式介紹:

cgi在2000年或更早的時候用得比較多,以前web伺服器一般只處理靜態的請求,如果碰到一個動態請求怎麼辦呢? web伺服器會根據這次請求的內容,然後會fork一個新進程來運行外部c程式(或perl腳本...), 這個進程會把處理完的資料回傳給web伺服器,最後web伺服器把內容傳送給用戶,剛才fork的進程也隨之退出。如果下次使用者也要求改動態腳本,那麼web伺服器又再次fork一個新進程,周而復始的進行。

web內建模組介紹:

後來出現了更進階的方式是,web伺服器可以內建perl解釋器或php解釋器。也就是說這些解釋器做成模組的方式,web伺服器會在啟動的時候就啟動這些解釋器。當有新的動態請求進來時,web伺服器就是自己解析這些perl或php腳本,省得重新fork一個進程,效率提高了。

fastcgi方式介紹:

fastcgi的方式是,web伺服器收到一個請求時,他不會重新fork一個進程(因為這個進程在web伺服器啟動時就開啟了,而且不會退出),web伺服器直接把內容傳遞給這個進程(進程間通信,但fastcgi使用了別的方式,tcp方式通信),這個進程收到請求後進行處理,把結果返回給web伺服器,最後自己接著等待下一個請求的到來,而不是退出.

fastcgi跟cgi的區別表格:

fastcgi與cgi有什麼差別?

##舉個例子: 服務端現在有個10萬個字單詞, 客戶每次會發來一個字串,問以這個字串為前綴的單字有多少個。那麼可以寫一個程序,這個程序會建造一棵trie樹,然後每次用戶請求過來時可以直接到這個trie去查找。但如果以cgi的方式的話,這次請求結束後這課trie也就沒了,等下次再啟動該進程時,又要新建一棵trie樹,這樣的效率就太低下了。  而用fastcgi的方式的話,這課trie樹在進程啟動時建立,以後就可以直接在trie樹上查詢指定的前綴了。


以上是fastcgi與cgi有什麼差別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:segmentfault.com。如有侵權,請聯絡admin@php.cn刪除