一 摘要
1996年,CGI是唯一一个能在网页上生成动态内容的方法!
对HTTP的理解,更加有助于理解CGI!
CGI(Common Gateway Interface),是一个通用的网关接口,允许外部进程生成动态网页!
交互过程:
(1)客户端通过超链接(隐形)或者按钮或者直接url的方式(显形)来发送HTTP请求资源
(2)Web服务器收到客户端发送的CGI脚本(资源)的请求,首先进行解析,判断是cgi脚本请求,而Web服务器自身不能直接处理,Web服务器把这个脚本作为另外一个进程(即单独进程来处理)来执行,服务器会给该进程传递一些参数(对客户端请求的收集参数)
过程:会调用CGI对应的脚本解释器,传递参数,去调用脚本解释器来执行
核心:是WEB服务器要识别这个请求是指向一个CGI脚本的!
CGI程序:可以理解为Web应用程序,是运行在Web服务器上的一段物理程序!
CGI种类:C、C++、C shell、VB、Python、Perl、PHP!
(3)CGI程序运行完毕,会以STDOUT的形式返回给WEB服务器,WEB服务器会封装,以html形式响应给客户端!
说明:WEB服务器获得CGI脚本的输出,在把它返还给到请求用户的浏览器之前,会加上自己的HTTP首部!
交互过程的示意图
(1)静态网页服务器的运行状态
(2)动态网页服务器运行状态有以下几各情况
2.1)没有数据库的场景
2.2)有单个数据库
2.3)有多个数据库
2.4)负载均衡的情况
动态与静态最根本的区别是在:网页在服务器端运行状态不同!
动态的网站:就是在网页中嵌入了Web应用程序,所以才可以动态的显示!
三 CGI还不错的文章
web服务器与cgi程序最佳组合(涉及很多细节,变量接受参数)
Apach http服务器:CGI脚本的目录 /var/www/htmlcgi-bin/
;脚本的后缀名是 pl(perl脚本)或者cgi(其它)
Web服务器和Web应用程序;静态资源和动态资源;概念
四 CGI主要缺点
(1)每个请求开启一个进程(fork-exec),高并发凉了!
(2)不能跨平台
五 FastCGI