區(qū)別分析:
(推薦學(xué)習(xí):nginx教程)
cgi
web 服務(wù)器會根據(jù)請求的內(nèi)容,然后會 fork 一個新進(jìn)程來運行外部 c 程序(或 perl 腳本…), 這個進(jìn)程會把處理完的數(shù)據(jù)返回給 web 服務(wù)器,最后 web 服務(wù)器把內(nèi)容發(fā)送給用戶,剛才 fork 的進(jìn)程也隨之退出。
如果下次用戶還請求改動態(tài)腳本,那么 web 服務(wù)器又再次 fork 一個新進(jìn)程,周而復(fù)始的進(jìn)行。
fastcgi
web 服務(wù)器收到一個請求時,他不會重新 fork 一個進(jìn)程(因為這個進(jìn)程在 web 服務(wù)器啟動時就開啟了,而且不會退出),web 服務(wù)器直接把內(nèi)容傳遞給這個進(jìn)程(進(jìn)程間通信,但 fastcgi 使用了別的方式,tcp 方式通信),這個進(jìn)程收到請求后進(jìn)行處理,把結(jié)果返回給 web 服務(wù)器,最后自己接著等待下一個請求的到來,而不是退出。
綜上所述,差別在于是否重復(fù) fork 進(jìn)程,處理請求。