谈谈CGI的开发
敬业的IT人
互联网
佚名
2008-4-15 10:32:19
现在这年头,各种web开发(在现在的程序开发中占有很大的比重)技术各领风骚,php(做为现在的主流开发语言),ASP,jsp(SUN企业级应用的首选)都是比较时髦的,于是人们似乎把cgi(现在已经不多人在用了)淡忘了,其实cgi(现在已经不多人在用了)最受诟病的是它的性能比较差,占用的系统资源比较高。许多程序员因此觉得cgi(现在已经不多人在用了)没有前途。
实际上,cgi(现在已经不多人在用了)除了传统的优点如:安全性高,接口标准简单,易于用不同语言实现外,近些年来出现的如fastcgi(现在已经不多人在用了)和mod_perl等技术已经可以弥补它在速度、资源方面的缺点。
下面以fastcgi(现在已经不多人在用了)技术为例简单说明:
传统cgi(现在已经不多人在用了)技术之所以速度慢,主要是因为一般 cgi(现在已经不多人在用了)每一次启动都要启动一个进程,如果有1000人同时在一个聊天室里聊天,那么就会产生1000个进程。对于有后台数据库的cgi(现在已经不多人在用了),意味着每次请求都是一次数据库连接、查询、断开的过程。这样的问题即使用C语言也不能解决,而像perl这样的解释语言更增加了启动解释程序的负担。
fastcgi(现在已经不多人在用了)的设计思想就是启动一个cgi(现在已经不多人在用了)进程以后不退出,一般情况下只要进行一次的操作如数据库连接、sql语句的准备都可以在启动时完成,以后再有新的请球,就只要直接查询,不需要解释、连接数据库、产生新进程,由此可以大大提高系统性能。
一个简单的例子:
#!/bin/perl
Print “Content-type : text/html\n\n”;
Print “I Love yuzi”;
这样的程序,每一次都要启动一个进程。
而使用了Fcgi(现在已经不多人在用了)模块以后:
use Fcgi(现在已经不多人在用了);
while(Fcgi(现在已经不多人在用了)::accept() >=0 )
{
print "Content-type: text/html\n\n";
print "I Love yuzi”;
}
exit 0;
只有循环内部每次执行
而从cgi(现在已经不多人在用了)转向fastcgi(现在已经不多人在用了)是很简单的,只要把启动部分放在while循环外面,其它部分在while循环里完成。但是应当注意的是,一般情况我们写perl cgi(现在已经不多人在用了)程序的时候不注意资源的回收,让程序结束的时候自动回收,但在fastcgi(现在已经不多人在用了)环境下这就会产生问题,所以要养成use strict的习惯,用my $var定义变量。
- 最新文章
- CGI脚本入门学习[04-15]
- Perl连接SQLServer[04-15]
- SSI使用详解[04-15]
- Perl6的结构[04-15]
- Perl用于实现遗传算法[04-15]
- Parrot 常见问题(翻译:DanceDanceDance..[04-15]
- 相关文章
- CGI脚本入门学习[04-15]
- XML和现代CGI应用程序[04-15]
- 在Perl/CGI中使用模板[04-15]
- CGI安全漏洞资料速查v1.0[04-15]
- Perl CGI 环境变量列表[04-15]
- 什么是CGI[04-15]
