CGI简介

       CGI:通用网关接口(Common Gateway Interface)是外部应用程序(CGI程序)与WEB服务器之间的接口标准,运行在服务器上。作为一种接口规范,CGI可以用任何一种具有标准输入输出和环境变量的语言进行编写。通过CGI接口,web服务器能够实现与应用程序的交互:获取客户端提交的信息,转交给服务器端的CGI程序进行处理,并将结果返回给客户端。

工作原理

1.浏览器通过HTML表单或超链接请求指向一个CGI应用程序的URL。
2.服务器收发到请求。
3.服务器执行指定CGI应用程序。
4.CGI应用程序执行所需要的操作,通常是基于浏览者输入的内容。
5.CGI应用程序把结果格式化为网络服务器和浏览器能够理解的文档(通常是HTML网页)。
6.网络服务器把结果返回到浏览器中。

完成以上过程有两个要素,一是HTML页面,即获取信息和返回结果的界面;二是运行在服务器上的CGI程序。CGI程序编程实例见参考2。

服务器配置:

将编写好的CGI程序编译并放置在服务器的某一特定的目录中,或使其带有特定的扩展名。

环境变量:

每个CGI程序只能处理一个用户请求,所以在激活一个CGI程序进程时也创建了属于该进程的环境变量。

环境变量定义了程序的执行环境,应用程序可以存取环境变量,或是通过它们得到输入。环境变量也可以用来向CGI程序传递一些重要的参数。环境变量名及描述见参考1.

CGI应用程序运行在浏览器可以请求的服务器系统上,执行时需要使用服务器CPU时间和内存,所以需要考虑对服务器的资源占用问题,能在客户端浏览器上执行的,可以用js解决,仅把需要在服务器端执行的写成CGI程序。

FastCGI简介:

当客户请求CGI的时候,WEB服务器就生成一个新的CGI解释器进程,处理完后退出,下一个请求来时再创建新进程。当访问量增大,并发存在,这种方式就难以使用。而FastCGI像是一个常驻(long-live)型的CGI,激活后可以一直执行,不用每次都要花费时间去fork一次。

FastCGI工作流程:

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中)的下一个连接。

另外FastCGI还支持分布式的运算,FastCGI 程序可以在网站服务器以外的主机上执行并且接受来自其它网站服务器来的请求。

参考:

1.https://blog.csdn.net/LiuNian_SiYu/article/details/60964966

2.http://www.runoob.com/cplusplus/cpp-web-programming.html

3.https://www.awaimai.com/371.html



猜你喜欢

转载自blog.csdn.net/Li_suhuan/article/details/79851516
CGI