您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關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的區別表格:
舉個例子: 服務端現在有個10萬個字單詞, 客戶每次會發來一個字符串,問以這個字符串為前綴的單詞有多少個。 那么可以寫一個程序,這個程序會建一棵trie樹,然后每次用戶請求過來時可以直接到這個trie去查找。 但是如果以cgi的方式的話,這次請求結束后這課trie也就沒了,等下次再啟動該進程時,又要新建一棵trie樹,這樣的效率就太低下了。 而用fastcgi的方式的話,這課trie樹在進程啟動時建立,以后就可以直接在trie樹上查詢指定的前綴了。
關于fastcgi與cgi有哪些區別就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。