CGI(电子工程术语)

更新时间:2025-05-19 01:22:51 阅读: 评论:0

CGI(电子工程术语)

通用网关接口Common Gateway Interface/CGI)是一种重要的网际网路技术,可以让一个客户端,从网页浏览器向执行在网路伺服器上的程式请求数据。CGI描述了伺服器和请求处理程式之间传输数据的一种标準。

基本介绍

中文名:通用网关接口 外文名:Common Gateway Interface 简称:CGI

历史

最初,CGI是在1993年由美国国家超级电脑套用中心(NCSA)为NCSA HTTPdWeb伺服器开发的。这个Web伺服器使用了UNIXshell环境变数来保存从Web伺服器传递出去的参数,然后生成一个运行CGI的独立的进程。

运作

程式语言Perl是一个广泛被用来编写CGI程式的语言,但CGI的一个目的是要独立于任何语言的。Web伺服器无须在这个问题上对语言有任何了解。事实上,CGI程式可以用任何脚本语言或者是完全独立程式语言实现,只要这个语言可以在这个系统上运行。除Perl外,像Unix shellscript,Python,Ruby,PHP,Tcl,C/C++,和Visual Basic都可以用来编写CGI程式。实现维基百科编辑的CGI程式的一个例子:首先用户代理程式向这个CGI程式请求某个名称的条目,如果该条目页面存在,CGI程式就会去获取那个条目页面的原始数据,然后把它转换成HTML并把结果输出给浏览器;如果该条目页面不存在,CGI程式则会提示用户新建一个页面。所有维基操作都是通过这个CGI程式来处理的。CGI的工作方式,从Web伺服器的角度看,是在特定的位置(比如:http://www.example/wiki.cgi)定义了可以运行CGI程式。当收到一个匹配URL的请求,相应的程式就会被调用,并将客户端传送的数据作为输入。程式的输出会由Web伺服器收集,并加上合适的档头,再传送回客户端。一般每次的CGI请求都需要新生成一个程式的副本来运行,这样大的工作量会很快将伺服器压垮,因此一些更有效的技术像mod_perl,可以让脚本解释器直接作为模组集成在Web伺服器(例如:Apache)中,这样就能避免重複载入和初始化解释器。不过这只是就那些需要解释器的高级语言(即解释语言)而言的,使用诸如C一类的编译语言则可以避免这种额外负荷。由于C及其他编译语言的程式与解释语言程式相比,前者的运行速度更快、对作业系统的负荷更小,使用编译语言程式是可能达到更高执行效率的,然而因为开发效率等原因,在目前直译性语言还是最合适的。

变通方法

如果代码只是偶尔改变的话,我们可以在伺服器产生一个新的进程在编译代码之前进行处理。有一个例子是FastCGI,当然还包括其它编写的加速器,它会在第一次调用脚本时,在系统的某个地方保存脚本编译过的版本。这样对这个档案以后的请求就会自动转向这个编译过的代码,而不用每次调用脚本解释器来解释脚本。当更改了脚本,加速器的临时快取会被清空来保证调用的是新的版本的脚本。另一个方法是直接把解释器放在Web伺服器中,这样就无须新建一个进程来执行脚本。Apache伺服器有很多这样的模组,像mod_cplusplus、mod_perl、mod_php、mod_python、mod_ruby、和mod_mono。

参见

FastCGI CGI.pm 简单通用网关接口 Perl

本文发布于:2023-03-25 14:55:37,感谢您对本站的认可!

本文链接:http://www.ranqi119.com/to/1679855611231581.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:术语   工程   电子   CGI
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 站长QQ:55-9-10-26|友情:优美诗词|电脑我帮您|扬州装修|369文学|学编程|软件玩家|水木编程|编程频道