cgi、fastcgi、php-cgi、php-fpm的关系
1. CGI
CGI全稱是“公共網(wǎng)關(guān)接口”(Common Gateway Interface),HTTP服務(wù)器與你的或其它機(jī)器上的程序進(jìn)行“交談”的一種工具,其程序須運(yùn)行在網(wǎng)絡(luò)服務(wù)器上。
CGI可以用任何一種語(yǔ)言編寫,只要這種語(yǔ)言具有標(biāo)準(zhǔn)輸入、輸出和環(huán)境變量。如php,perl,tcl等。
服務(wù)器接收到請(qǐng)求后,如果是index.html這樣的靜態(tài)文件,可以直接去相應(yīng)的目錄找到這個(gè)文件,然后返回給客戶端,但是當(dāng)發(fā)送的請(qǐng)求是index.php這樣請(qǐng)求,顯然這個(gè)是需要解析的,此時(shí)就需要服務(wù)器將這個(gè)請(qǐng)求傳遞給cgi程序解析,解析完成后返回結(jié)果。但是要傳遞什么內(nèi)容呢,這個(gè)就是cgi來(lái)規(guī)定的。
2. Fastcgi
Fastcgi是用來(lái)提高CGI程序性能的,是CGI的升級(jí)版,一種語(yǔ)言無(wú)關(guān)的協(xié)議
服務(wù)器每次將請(qǐng)求傳遞給cig程序解析的時(shí)候都會(huì)解析配置文件,比如php.ini,想想就知道這回影響性能,fastcgi會(huì)先啟動(dòng)一個(gè)master解析配置文件,初始化環(huán)境,然后再啟動(dòng)多個(gè)worker,當(dāng)請(qǐng)求過(guò)來(lái)的時(shí)候master會(huì)傳遞給woker,然后立即去接受下一個(gè)請(qǐng)求。當(dāng)worker不夠用的時(shí)候會(huì)增加,當(dāng)空閑的worker多的時(shí)候會(huì)停掉一些,這樣的機(jī)制可以提高性能,節(jié)省資源。
3. php-cgi
- PHP-CGI是php自帶的Fast-CGI管理器.
- php.ini修改之后,必須kill掉php-cgi再啟動(dòng)php.ini 才生效。不可以平滑的重啟
- 內(nèi)存不能動(dòng)態(tài)分配
- 啟動(dòng)php,指定啟動(dòng)的worker ,長(zhǎng)期駐留在內(nèi)存里 ,用戶訪問(wèn)php文件, php-cgi 處理請(qǐng)求,返回結(jié)果
4. Php-fmp
- 非官方fastCgi進(jìn)程管理器,后來(lái)php5.4開始,被官方收錄了
- 可以平滑重啟php
- 動(dòng)態(tài)調(diào)度進(jìn)程
- 啟動(dòng)php,動(dòng)態(tài)指定啟動(dòng)的worker ,長(zhǎng)期駐留在內(nèi)存里 ,根據(jù)來(lái)訪壓力動(dòng)態(tài)增減worker的進(jìn)程數(shù)量,用戶訪問(wèn)php文件, php-fpm 處理請(qǐng)求,返回結(jié)果
php-cgi和php-fpm的關(guān)系呢?
php54是之前是一種關(guān)系,php54之后另一種關(guān)系。php54之前,php-fpm(第三方編譯)是管理器,php-cgi是解釋器。php54之后,php-fpm(官方自帶),master 與 pool 模式。php-fpm 和 php-cgi 沒(méi)有關(guān)系了。php-fpm又是解釋器,又是管理器網(wǎng)上大部分說(shuō)法:php-fpm 是管理php-cgi 的,是針對(duì)php54之前的
參考資料
https://www.awaimai.com/371.html
https://segmentfault.com/q/1010000000256516
http://cuishan.win/2017/02/05/cgi-fastcgi-php-cgi-php-fpm/
https://www.zhihu.com/question/55835080
轉(zhuǎn)載于:https://www.cnblogs.com/redirect/p/10066684.html
總結(jié)
以上是生活随笔為你收集整理的cgi、fastcgi、php-cgi、php-fpm的关系的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: String类型数组 根据首字母排序
- 下一篇: 《Linux 性能及调优指南》1.6 了