Web Server启动时载入FastCGI历程管理器

作者: 健隆 分类: 烟台网站制作资讯 发布时间: 2020-07-18 10:18

关于PHP今朝对照罕见的五大运转情势:

1)CGI(通用网关接口/ Common Gateway Interface)

2)FastCGI(常驻型CGI / Long-Live CGI)

3)CLI(命令行运转 / Command Line Interface)

4)Web模块情势(Apache等Web服务器运转的情势)

5)ISAPI(Internet Server Application Program Interface)

备注:在PHP5.3今后,PHP不再有ISAPI情势,装置后也不再有php5isapi.dll这个文件。要在IIS6上利用高版本PHP,必需装置FastCGI 扩大,然后使IIS6支撑FastCGI。

1.1、CGI情势

CGI即通用网关接口(Common Gateway Interface),它是一段法式,浅显的讲CGI就象是一座桥,把网页和Web服务器中的履行法式毗邻起来,它把HTML领受的指令传递给服务器的履行法式,再把服务器履行法式的效果返还给HTML页。CGI 的跨平台机能极佳,几近可以在任何操作零碎上完成。CGI已是对照老的情势了,这几年都很少用了。

每有一个用户要求,都邑先要建立CGI的子历程,然后处置惩罚要求,处置惩罚完后竣事这个子历程,这就是Fork-And-Execute情势。 当用户要求数目异常多时,会少量挤占零碎的资本如内存,CPU时间等,形成效能低下。所以用CGI体式格局的服务器有若干毗邻要求就会有若干CGI子历程,子历程频频加载是CGI机能低下的主要缘由。 

假如不想把 PHP 嵌入到服务器端软件(如 Apache)作为一个模块装置的话,可以选择以 CGI 的情势装置。或把 PHP 用于分歧的 CGI 封装以便为代码建立平安的 chroot 和 setuid 情况。如许每一个客户机要求一个PHP文件,Web服务器就挪用php.exe(win下是php.exe,linux是php)去注释这个文件,然后再把注释的效果以网页的情势前往给客户机。 这类装置体式格局平日会把 PHP 的可履行文件装置到 web 服务器的 cgi-bin 目次。CERT 建议书 CA-96.11 建议不要把任何的注释器放到 cgi-bin 目次。 这类体式格局的长处是把Web Server和详细的法式处置惩罚自力开来,构造清楚,可控性强,同时瑕玷就是假如在高接见需求的情况下,CGI的历程Fork就会成为很大的服务器肩负,想 象一下数百个并发要求致使服务器Fork出数百个历程就邃晓了。这也是为何CGI一向背负机能低下,高资本消费的恶名的缘由。

1.2、FastCGI情势

FastCGI是CGI的进级版本,FastCGI像是一个常驻 (long-live)型的 CGI,它可以一向履行着,只需激活后,不会每次都要花费时间去 Fork 一次 (这是 CGI 最为人诟病的 fork-and-execute 情势)。

FastCGI是一个可伸缩地、高速地在HTTP server和静态剧本说话间通讯的接口。多半流行的HTTP server都支撑FastCGI,包孕Apache、Nginx和lighttpd等,同时,FastCGI也被很多剧本说话所支撑,个中就有PHP。

FastCGI接口体式格局采取C/S构造,可以将HTTP服务器和剧本解析服务器分隔隔离分散,同时在剧本解析服务器上启动一个或多个剧本解析守护历程。当HTTP服务器每次碰到静态法式时,可以将其直接交付给FastCGI历程来履行,然后将获得的效果前往给浏览器。这类体式格局可以让HTTP服务器专一地处置惩罚静态要求或将静态剧本服务器的效果前往给客户端,这在很大程度上进步了全部应用零碎的机能。

【道理】

1)Web Server启动时载入FastCGI历程管理器(IIS ISAPI或Apache Module);

2)FastCGI历程管理器本身初始化,启动多个CGI注释器历程 (可见多个php-cgi.exe或php-cig)并守候来自Web Server的毗邻;

3)当客户端要求达到Web Server时,FastCGI历程管理器选择并毗邻到一个CGI注释器。Web server将CGI情况变量和尺度输出发送到FastCGI子历程php-cgi;

4)FastCGI子历程完成处置惩罚后将尺度输出和毛病信息从统一毗邻前往Web Server。当FastCGI子历程封闭毗邻时,要求便告处置惩罚完成。FastCGI子历程接着守候并处置惩罚来自FastCGI历程管理器(运转在 WebServer中)的下一个毗邻。在正常的CGI情势中,php-cgi.exe在此便退出了。

在CGI情势中,你可以想象 CGI平日有多慢。每一个Web要求PHP都必需从新解析php.ini、从新载入悉数dll扩大偏重初始化悉数数据构造。利用FastCGI,所有这些都只在历程启动时产生一次。一个额定的长处是,延续数据库毗邻(Persistent database connection)可以任务。

备注:PHP的FastCGI历程管理器是PHP-FPM(PHP-FastCGI Process Manager)

【长处】

1)从稳定性上看,FastCGI是以自力的历程池来运转CGI,零丁一个历程死掉,零碎可以很随意马虎的抛弃,然后从新分派新的历程来运转逻辑;

2)从平安性上看,FastCGI支撑分布式运算。FastCGI和宿主的Server完整自力,FastCGI怎样down也不会把Server搞垮;

3)从机能上看,FastCGI把静态逻辑的处置惩罚从Server中星散出来,大负荷的IO处置惩罚照样留给宿主Server,如许宿主Server可以一心一意作IO,对一个浅显的静态网页来讲, 逻辑处置惩罚能够只需一小部分,少量的是图片等静态。

 

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!