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