摘要:原理啟動(dòng)時(shí)載入進(jìn)程管理器或進(jìn)程管理器自身初始化,啟動(dòng)多個(gè)解釋器進(jìn)程可見多個(gè)并等待來自的連接。當(dāng)客戶端請(qǐng)求到達(dá)時(shí),進(jìn)程管理器選擇并連接到一個(gè)解釋器。子進(jìn)程接著等待并處理來自進(jìn)程管理器運(yùn)行在中的下一個(gè)連接。
CGI 簡(jiǎn)介
CGI全稱是通用網(wǎng)關(guān)接口(Common Gateway Interface),是外部應(yīng)用程序與與服務(wù)器之間的接口標(biāo)準(zhǔn),是在CGI程序和web服務(wù)器之間傳遞信息的規(guī)程。
在物力層面上、CGI是一段程序,運(yùn)行在服務(wù)器上。
CGI可以用任意語言編寫,主要這種語言具有標(biāo)準(zhǔn)輸入、輸出和環(huán)境變量
FastCGI 簡(jiǎn)介FastCGI是一個(gè)可伸縮地、高速地在HTTP server和動(dòng)態(tài)腳本語言間通信的接口。多數(shù)流行的HTTP server都支持FastCGI,包括Apache、Nginx和lighttpd等,同時(shí),F(xiàn)astCGI也被許多腳本語言所支持,其中就有PHP。
FastCGI是從CGI發(fā)展改進(jìn)而來的。傳統(tǒng)CGI接口方式的主要缺點(diǎn)是性能很差,因?yàn)槊看蜨TTP服務(wù)器遇到動(dòng)態(tài)程序時(shí)都需要重新啟動(dòng)腳本解析器來執(zhí)行解析,然后結(jié)果被返回給HTTP服務(wù)器。這在處理高并發(fā)訪問時(shí),幾乎是不可用的。另外傳統(tǒng)的CGI接口方式安全性也很差,現(xiàn)在已經(jīng)很少被使用了。
FastCGI接口方式采用C/S結(jié)構(gòu),可以將HTTP服務(wù)器和腳本解析服務(wù)器分開,同時(shí)在腳本解析服務(wù)器上啟動(dòng)一個(gè)或者多個(gè)腳本解析守護(hù)進(jìn)程。當(dāng)HTTP服務(wù)器每次遇到動(dòng)態(tài)程序時(shí),可以將其直接交付給FastCGI進(jìn)程來執(zhí)行,然后將得到的結(jié)果返回給瀏覽器。這種方式可以讓HTTP服務(wù)器專一地處理靜態(tài)請(qǐng)求或者將動(dòng)態(tài)腳本服務(wù)器的結(jié)果返回給客戶端,這在很大程度上提高了整個(gè)應(yīng)用系統(tǒng)的性能。
原理Web Server啟動(dòng)時(shí)載入FastCGI進(jìn)程管理器(IIS ISAPI或Apache Module)
FastCGI進(jìn)程管理器自身初始化,啟動(dòng)多個(gè)CGI解釋器進(jìn)程(可見多個(gè)php-cgi)并等待來自Web Server的連接。
當(dāng)客戶端請(qǐng)求到達(dá)Web Server時(shí),F(xiàn)astCGI進(jìn)程管理器選擇并連接到一個(gè)CGI解釋器。Web server將CGI環(huán)境變量和標(biāo)準(zhǔn)輸入發(fā)送到FastCGI子進(jìn)程php-cgi。
FastCGI子進(jìn)程完成處理后將標(biāo)準(zhǔn)輸出和錯(cuò)誤信息從同一連接返回Web Server。當(dāng)FastCGI子進(jìn)程關(guān)閉連接時(shí),請(qǐng)求便告處理完成。FastCGI子進(jìn)程接著等待并處理來自FastCGI進(jìn)程管理器(運(yùn)行在Web Server中)的下一個(gè)連接。 在CGI模式中,php-cgi在此便退出了。
PHP-CGI 簡(jiǎn)介PHP-CGI是php自帶的Fast-CGI管理器。
PHP-CGI的不足:
php-cgi變更php.ini配置后需重啟php-cgi才能讓新的php-ini生效,不可以平滑重啟。
直接殺死php-cgi進(jìn)程,php就不能運(yùn)行了。(PHP-FPM和Spawn-FCGI就沒有這個(gè)問題,守護(hù)進(jìn)程會(huì)平滑從新生成新的子進(jìn)程。)
PHP-FPM 簡(jiǎn)介PHP-FPM是一個(gè)PHP FastCGI的管理器,他是能夠調(diào)度php-cgi進(jìn)程的程序。
修改php.ini之后,php-cgi進(jìn)程的確沒辦法平滑重啟,但php-fpm對(duì)此的應(yīng)對(duì)方法是新的進(jìn)程用新的配置,已經(jīng)存在的進(jìn)程讓按照之前的配置執(zhí)行到結(jié)束。用這種方式進(jìn)行平滑過渡。
PHP-fpm就是針對(duì)于PHP的,F(xiàn)astcgi的一種實(shí)現(xiàn),他負(fù)責(zé)管理一個(gè)進(jìn)程池,來處理來自Web服務(wù)器的請(qǐng)求。目前,PHP-fpm是內(nèi)置于PHP的
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/30558.html
摘要:通過,腳本層無需過多考慮執(zhí)行的具體環(huán)境,而本身則可以讓針對(duì)自己的特點(diǎn)給出特有實(shí)現(xiàn)。模式下,也只執(zhí)行一次。這幾個(gè)概念的關(guān)系如下網(wǎng)關(guān)協(xié)議,與語言無關(guān),所以與關(guān)系也不大??偨Y(jié)本文簡(jiǎn)要回顧了程序的架構(gòu)和執(zhí)行流程,并對(duì)幾個(gè)容易混淆概念做了介紹。 轉(zhuǎn)載請(qǐng)注明文章出處:https://tlanyan.me/php-review... PHP回顧系列目錄 PHP基礎(chǔ) web請(qǐng)求 cookie we...
摘要:概念全稱是通用網(wǎng)關(guān)接口,服務(wù)器與應(yīng)用進(jìn)行交談的一種工具,其程序須運(yùn)行在網(wǎng)絡(luò)服務(wù)器上。開啟之后,會(huì)看到多個(gè)進(jìn)程,它們都由管理。一些進(jìn)步修改配置后,平滑過渡,新的進(jìn)程使用新的配置,正在運(yùn)行的進(jìn)程處理完當(dāng)前請(qǐng)求后自動(dòng)。 CGI(Common Gateway InterFace) 既然webserver想把這個(gè)請(qǐng)求交給可以處理的人來做,是不是該告訴人家一些基本的,并且人家看得懂的信息信息? W...
摘要:通過或在服務(wù)器上運(yùn)行時(shí)可以使用的可執(zhí)行文件,可以理解為解釋器也有說是官方的進(jìn)程管理器,至于是什么文章后面再分析,這里就當(dāng)作解釋器。就是為了解決的問題,制定的協(xié)議。 一個(gè)模糊的概念 無論是php,python編程語言,還是apache,nginx服務(wù)器對(duì)于cgi協(xié)議是個(gè)繞不開的話題。安裝,部署都會(huì)經(jīng)常的看到,那么它們到底是干什么的,網(wǎng)上的答案非常的多!今天通過它們進(jìn)行一波匯總,徹底告別這...
摘要:通過或在服務(wù)器上運(yùn)行時(shí)可以使用的可執(zhí)行文件,可以理解為解釋器也有說是官方的進(jìn)程管理器,至于是什么文章后面再分析,這里就當(dāng)作解釋器。就是為了解決的問題,制定的協(xié)議。 一個(gè)模糊的概念 無論是php,python編程語言,還是apache,nginx服務(wù)器對(duì)于cgi協(xié)議是個(gè)繞不開的話題。安裝,部署都會(huì)經(jīng)常的看到,那么它們到底是干什么的,網(wǎng)上的答案非常的多!今天通過它們進(jìn)行一波匯總,徹底告別這...
摘要:通過或在服務(wù)器上運(yùn)行時(shí)可以使用的可執(zhí)行文件,可以理解為解釋器也有說是官方的進(jìn)程管理器,至于是什么文章后面再分析,這里就當(dāng)作解釋器。就是為了解決的問題,制定的協(xié)議。 一個(gè)模糊的概念 無論是php,python編程語言,還是apache,nginx服務(wù)器對(duì)于cgi協(xié)議是個(gè)繞不開的話題。安裝,部署都會(huì)經(jīng)常的看到,那么它們到底是干什么的,網(wǎng)上的答案非常的多!今天通過它們進(jìn)行一波匯總,徹底告別這...
閱讀 1299·2021-11-17 09:33
閱讀 1786·2021-09-09 11:53
閱讀 3276·2021-09-04 16:45
閱讀 1453·2021-08-17 10:12
閱讀 2442·2019-08-30 15:55
閱讀 1800·2019-08-30 15:53
閱讀 2436·2019-08-30 15:52
閱讀 2592·2019-08-29 18:41