Common Gateway Interface

Common Gateway Interface

CGI(一个商量)
是web服务器和外部应用程序(cgi程序)之间的接口标准,是cgi程序及web服务器之间传递信息的规程。

cgi

以物理及是同样段落先后,运行在服务器上,提供和客户端HTML页面的接口。这样说约还不好理解。那么我们看一个实际上例子:现在的个人主页上大部分都起一个留言本。留言本的行事是这样的:先由用户以客户端输入有信息,如名字之类的东西。接着用户仍一下“留言”(到目前为止工作都于客户端),浏览器把这些信传递到服务器的CGI目录下一定的cgi程序中,于是cgi程序于服务器上随预约的办法开展处理。在本例中就是管用户提交的音存入指定的公文中。然后cgi程序让客户端发送一个信息,表示要的天职就终结。此时用户在浏览器里将看到“留言结束”的字样。整个过程结束。

处理步骤:

⑴通过Internet把用户要送及web服务器。

⑵web服务器收到用户请求并付出CGI程序处理。

⑶CGI程序把处理结果传送给web服务器。

⑷web服务器将结果送返回用户。

cgi程序是由于用户之输入触发的,运行在web服务器上之主次。CGI是当HTTP服务器下运行外部程序(或网关)的一个接口,它能够让网络用户访问远程系统及的施用项目程序,就象是他们以事实上行使那些远距离计算机一样。

cgi

做事原理:

1.浏览器通过HTML表单或超链接呼吁对一个CGI应用程序的URL。

2.服务器收发到要。

3.服务器执行指定所CGI应用程序。

4.CGI应用程序执行所要之操作,通常是因浏览者输入的内容。

5.CGI应用程序把结果格式化为网络服务器跟浏览器会明白的文档(通常是HTML网页)。

6.网络服务器将结果返回到浏览器被。

最低水平,PHP可以开另外其他CGI程序所能召开的从事,例如收集表格数据,生成动态页面内容,或者收发cookies.可能最精,最有义的特征是PHP支持大范围之数量库.书写一个支持数据库的Web
页面是难以置信的简短。


FastCGI(一个商议)

CGI 的性质缺点:web server 得到一个request
后,会fork一个子历程,然后子进程执行cgi程序。这象征
如果N个请求并发访问同一cgi
程序,那么该次会为作载入内存N次。cgi进程的一再加载造成了cgi的习性低下。

FastCGI
就是一个常驻型(long-live)的cgi。它的关键表现是用cgi解释器进程保存在内存中因博比较高的特性。

工作原理:

1、Web
Server启动时载入FastCGI经过管理器(IIS
ISAPI或Apache Module)

2、FastCGI进程管理器自身初始化,启动多只CGI解释器经过(可见多个php-cgi)并等待来自Web
Server的连年。

3、当客户端请求到达Web
Server时,FastCGI进程管理器选择并连续到一个CGI解释器。Web
server将CGI环境变量暨正式输入发送到FastCGI子进程php-cgi。

4、FastCGI子进程就处理后将业内输出及错误信息从同连接返回Web
Server。当FastCGI子进程关闭连接时,请求便告处理完成。FastCGI子进程就等待并拍卖来自FastCGI经过管理器(运行于Web
Server中)的生一个连。
在CGI模式中,php-cgi于是便脱离了。

在上述情况中,你可想像CGI通常有多慢。每一个Web请求PHP都不能不再次分析php.ini、重新载入全部扩大并重初始化全部数据结构。使用FastCGI,所有这些还单于经过启动时起同样不良。一个分外的补是,持续数据库连接(Persistent
database connection)可以干活。


PHP-CGI(实现了FastCGI的程序)

PHP-CGI是PHP自带的FastCGI管理器。

PHP-CGI的不足:

php-cgi变更php.ini配置后需要另行启php-cgi才会为新的php-ini生效,不得以平滑重开。

直杀死php-cgi进程,php就未能够运行了。(PHP-FPM和Spawn-FCGI就从未此问题,守护进程会平滑从新兴成新的子进程。)


PHP-FPM(实现了FastCGI的程序)

PHP-FPM是一个PHP FastCGI管理器,是单用于PHP的。解决了php-cgi的一部分题目。

PHP5.3.3已经集成php-fpm了,不再是第三着的承保了。PHP-FPM提供了再度好之PHP进程管理方式,可以中控制内存和过程、可以平滑重载PHP配置,比spawn-fcgi具有双重多发生硌,所以受PHP官方收录了。在./configure的当儿带
–enable-fpm参数即可开启PHP-FPM

CGI方式是每个请求fork一个子进程,然后再度销售毁.高频度的顾下,频繁之fork产生额外的系出,限制了拍卖能力,所以在apache下跑php一般还是内嵌模块的方式(mod_php)

话说CGI还有雷同种植转移种FASTCGI, 为了化解CGI的这种缺陷,
大概是达到世纪90年间中叶起了FASTCGI, 以常驻进程的道提供CGI服务,

唯有是大抵以,apache有矣mod_perl,
mod_php等模块,性能一般比起优势,大家都喜欢用这种艺术,
所以fastcgi没立马炸起来。

admin

网站地图xml地图