Windows2000下实现FastCGI(PERL版)
敬业的IT人
互联网
佚名
2008-4-15 11:59:15
四川 王骜骋 著
什么是cgi(现在已经不多人在用了)?
最早的网页都是静态的,好在有了cgi(现在已经不多人在用了)(通用网关接口)的帮助下,网站个个都变的活灵活现,像目前网站上在用的留言本,论坛,聊天室等东西很多都用cgi(现在已经不多人在用了)来完成的。 cgi(现在已经不多人在用了)只是一种接口,并不是一种编程的语言,但是cgi(现在已经不多人在用了)几乎可以接受所有的编程语言去编写它,比如C/C++、VB、SHELL等等,但是其中最流行的是PERL(骆驼) ,PERL的文字处理功能非常强大,作者开发它的目的最先也是为了处理文字报表等信息,它是一种解释性的语言,操作平台的可移植性、兼容性也很强,比如WINDOWS、*NUX、OS/2、VMS等等 ,使用这种语言编写程序需要在操作系统上安装PERL的解释器,要执行脚本的话,PERL解释器会被调用,然后一行一行的做解析(关于PERL的安装、调试请参考相关网站或书籍,这里不多说)。
什么是Fastcgi(现在已经不多人在用了)?
时代在进步,技术在更新!我们的网站越做越大,后台使用的数据库规模也逐渐增加,系统资源和网络开销成为了难题,如果再购买硬件设施(比如专业的应用程序服务器),这会投入一笔不小的资金,但是如果不及时解决,遇到了突法性的网络事件又会经常当机,这会给网站带来巨大的无形损失。PERL虽然说是一种方便、快速的东西,但是遇到今天的大型网络,也有点吃不消了,因为cgi(现在已经不多人在用了)的程序每次执行时都要花费时间去复制一个新的进程,这会占用过多的资源。就因为这样一种叫Fastcgi(现在已经不多人在用了)的东西横空出世了,Fastcgi(现在已经不多人在用了)是一个内存常驻(long-live)型的cgi(现在已经不多人在用了),它利用内存高速的原理,在编程中进行循环结构把程序寄放在内存
中,只要启动后,它可以一直执行着,从而大量提高程序的运行速度,和CPU、内存的占用时间,这里大家可以想想内存读取和硬盘读取的速度差异所在。这样而来系统就会更快的返回用户的请求,也就是说可以同时拥有更大的并发能力,接受更多的用户。
如何在WIN2K上进行安装?
以前讨论*NUX上安装Fastcgi(现在已经不多人在用了)的文章比较多,我这里就不再介绍了。我们今天来看看怎么在WIN2K上安装它。目前我使用的WIN2K是Server(服务器)版和apache(Unix平台最流行的WEB服务器平台) WEB SERVER。我们采取一种简便的方式在apache(Unix平台最流行的WEB服务器平台)上安装Fastcgi(现在已经不多人在用了),这里我们不需要进行编译,直接使用编译好的DLL文件,文件下载的地方请看文章尾部(下载一)。 DOWN下来后,把这个文件复制到x:\apache(Unix平台最流行的WEB服务器平台)\modules(x:代表你安装apache(Unix平台最流行的WEB服务器平台)的盘符),下一步是配置apache(Unix平台最流行的WEB服务器平台)的
CONFIG文件以加载Fastcgi(现在已经不多人在用了)模块,用文本打开x:\apache(Unix平台最流行的WEB服务器平台)\conf\httpd.conf,在其中加入以下两行:
LoadModule fastcgi(现在已经不多人在用了)_module modules/mod_fastcgi(现在已经不多人在用了).dll
AddHandler fastcgi(现在已经不多人在用了)-script .fcgi(现在已经不多人在用了) .fpl
以上第一行是说,在apache(Unix平台最流行的WEB服务器平台)启动的时候自动载入mod_fastcgi(现在已经不多人在用了).dll模块,第二行是说Fastcgi(现在已经不多人在用了)的文件识别名称, 好让系统知道哪些是Fastcgi(现在已经不多人在用了)脚本,应该怎么去打开它(这里我们定义了两个文件后缀fcgi(现在已经不多人在用了)和fpl,当然你也可 以自己增加其他后缀)。就这样最简单的apache(Unix平台最流行的WEB服务器平台) Fastcgi(现在已经不多人在用了)配置就已经完成了。
完成您的第一个Fastcgi(现在已经不多人在用了)程序!
用PERL写Fastcgi(现在已经不多人在用了)是最方便不过了,有的只需要增加(修改)几行代码即可完成。下面我们来完成第一个Fastcgi(现在已经不多人在用了) 程序。现在大部分都使用ActivePerl的PERL解释器,如果你还没有,请下载一个吧(下载二),Fastcgi(现在已经不多人在用了)在PERL中 的实现我们采用一个名称叫Fcgi(现在已经不多人在用了)的软件包(下载三),这个包中提供了一些基本的Fastcgi(现在已经不多人在用了)函数,下面来进行安装 这个包,把Fcgi(现在已经不多人在用了).zip解压到任意目录,进入该目录后使用以下命令进行安装:
ppm install Fcgi(现在已经不多人在用了).ppd
如果无以外就说明该软件包已经成功安装在你的系统中,然后该轮到写程序的时候了,我们这里写一个最简单的 计数器程序,程序代码如下:
#!perl
#######################
# Fastcgi(现在已经不多人在用了) 计数器演示
# 作者 :王骜骋
#######################
use Fcgi(现在已经不多人在用了); # 使用Fcgi(现在已经不多人在用了)模块
my $count = 0; # 初始化变量$count为值0
while (Fcgi(现在已经不多人在用了)::accept() >= 0) { # 让程序进入循环状态
# Fcgi(现在已经不多人在用了)::accept 是Fcgi(现在已经不多人在用了)包中的函数
# 用来接受一个连接,如果连接成功则返回0
print "Content-Type:text/html\n\n";# 申明内容类型为HTML
print "你是第";
print $count++;# 输入计数器的值并增加1
print "位访问者";
}
把以上程序拷贝到一个后缀为fcgi(现在已经不多人在用了)或fpl的文件中,然后在浏览器中执行它即可。这时你按刷新就能看到计数器的值在不断的向上增加,通过这个原理,我们可以做出更多更好的程序,下面我们介绍一下留言本的编写技巧和原理。
Fastcgi(现在已经不多人在用了)的编程技巧!
以上的程序只是一个简单的计数器,如果真正投放到应用中,我们也不能只写计数器呀。下面我们来谈谈Fastcgi(现在已经不多人在用了)编 些留言本的一些使用技巧,编写留言本不像计数器只增加数字就可以了,留言本有很多字段,最简单的也要包含姓名 和内容,这样一来,访问时候就会带有很多参数值,Fastcgi(现在已经不多人在用了)在获取这些参数值的时候和一般的PERL程序不一样,因 为Fastcgi(现在已经不多人在用了)程序一直在内存中工作,如果使用一般的参数读取方法,很容易产生混淆,以导致程序无法正常工作。所以 我们使用另外一个模块cgi(现在已经不多人在用了)中的子集Fast(备注:cgi(现在已经不多人在用了)是一个相当出名的模块,其中包含的函数相当丰富,比如上传、获 取表单、浏览器COOKIE值、Server Push等等),下面来看看留言本的编写过程:
#!perl
#######################
# Fastcgi(现在已经不多人在用了) 留言本演示
# 文件名称:guest.fcgi(现在已经不多人在用了)
# 作者 :王骜骋
#######################
use cgi(现在已经不多人在用了)::Fast qw(:standard);# 使用cgi(现在已经不多人在用了)模块的Fastcgi(现在已经不多人在用了)子集
my $data_file = "data.txt";# 指定数据库文件名称
while (my $cgi(现在已经不多人在用了) = new cgi(现在已经不多人在用了)::Fast) {
print "Content-Type:text/html\n\n";
my ($rw);# 本地变量申明
$rw = $cgi(现在已经不多人在用了)->param("rw");# 读取表单值,判断是读取还是写入
if ($rw eq "r" || $rw eq "") {
print qq~
<form name="" action="guest.fcgi(现在已经不多人在用了)" >
<p>姓名:
<input type="text" name="name">
</p>
<p>留言:
<textarea name="content" wrap="VIRTUAL"></textarea>
</p>
<p>
<input type="submit" value="确定">
<input type="reset" value="清除">
<input type="hidden" name="rw" value="w">
</p>
</form>
~;
my @line = &Read_Data;# 获取数据库
foreach (@line) {# 输出留言内容
my ($name,$content) = split(/&&/,$_);
print qq~
姓名:$name
<br>
内容:$content
<hr>
~;
}
} else {
my $name = $cgi(现在已经不多人在用了)->param("name");
my $content = $cgi(现在已经不多人在用了)->param("content");
local $ok = 1;
if ($name eq "" || $content eq "") {
&Print_Erro("请填写完所有的内容!");
}
if ($ok) {
&Write_Data($name,$content);
&Print_Succ("留言成功!");
}
}
}
sub Read_Data {# 函数功能:读取数据库
open (FILE,$data_file);
my @line = <FILE>
close (FILE);
return @line;
}
sub Write_Data {# 函数功能:写入数据库
my ($name,$content) = @_;
open (FILE,">>$data_file");
print FILE "$name&&$content\n";
close (FILE);
}
sub Print_Succ {# 函数功能:输入成功页面
print qq~@_<a href="http://www.cncms.com.cn/cgi/java script:history.go(-1);">点击这里查看</a>~;
}
sub Print_Erro {# 函数功能:输入错误页面
$ok = 0;
print qq~@_<a href="http://www.cncms.com.cn/cgi/java script:history.go(-1);">点击这里返回</a>~;
}
作者结束语:试用了以上的程序有何感想?是不是速度飞快?该文章是作者使用Fastcgi(现在已经不多人在用了)后的一些经验和感想,如果文章中出现语法错误或系统错误,请大家不吝赐教
什么是cgi(现在已经不多人在用了)?
最早的网页都是静态的,好在有了cgi(现在已经不多人在用了)(通用网关接口)的帮助下,网站个个都变的活灵活现,像目前网站上在用的留言本,论坛,聊天室等东西很多都用cgi(现在已经不多人在用了)来完成的。 cgi(现在已经不多人在用了)只是一种接口,并不是一种编程的语言,但是cgi(现在已经不多人在用了)几乎可以接受所有的编程语言去编写它,比如C/C++、VB、SHELL等等,但是其中最流行的是PERL(骆驼) ,PERL的文字处理功能非常强大,作者开发它的目的最先也是为了处理文字报表等信息,它是一种解释性的语言,操作平台的可移植性、兼容性也很强,比如WINDOWS、*NUX、OS/2、VMS等等 ,使用这种语言编写程序需要在操作系统上安装PERL的解释器,要执行脚本的话,PERL解释器会被调用,然后一行一行的做解析(关于PERL的安装、调试请参考相关网站或书籍,这里不多说)。
什么是Fastcgi(现在已经不多人在用了)?
时代在进步,技术在更新!我们的网站越做越大,后台使用的数据库规模也逐渐增加,系统资源和网络开销成为了难题,如果再购买硬件设施(比如专业的应用程序服务器),这会投入一笔不小的资金,但是如果不及时解决,遇到了突法性的网络事件又会经常当机,这会给网站带来巨大的无形损失。PERL虽然说是一种方便、快速的东西,但是遇到今天的大型网络,也有点吃不消了,因为cgi(现在已经不多人在用了)的程序每次执行时都要花费时间去复制一个新的进程,这会占用过多的资源。就因为这样一种叫Fastcgi(现在已经不多人在用了)的东西横空出世了,Fastcgi(现在已经不多人在用了)是一个内存常驻(long-live)型的cgi(现在已经不多人在用了),它利用内存高速的原理,在编程中进行循环结构把程序寄放在内存
中,只要启动后,它可以一直执行着,从而大量提高程序的运行速度,和CPU、内存的占用时间,这里大家可以想想内存读取和硬盘读取的速度差异所在。这样而来系统就会更快的返回用户的请求,也就是说可以同时拥有更大的并发能力,接受更多的用户。
如何在WIN2K上进行安装?
以前讨论*NUX上安装Fastcgi(现在已经不多人在用了)的文章比较多,我这里就不再介绍了。我们今天来看看怎么在WIN2K上安装它。目前我使用的WIN2K是Server(服务器)版和apache(Unix平台最流行的WEB服务器平台) WEB SERVER。我们采取一种简便的方式在apache(Unix平台最流行的WEB服务器平台)上安装Fastcgi(现在已经不多人在用了),这里我们不需要进行编译,直接使用编译好的DLL文件,文件下载的地方请看文章尾部(下载一)。 DOWN下来后,把这个文件复制到x:\apache(Unix平台最流行的WEB服务器平台)\modules(x:代表你安装apache(Unix平台最流行的WEB服务器平台)的盘符),下一步是配置apache(Unix平台最流行的WEB服务器平台)的
CONFIG文件以加载Fastcgi(现在已经不多人在用了)模块,用文本打开x:\apache(Unix平台最流行的WEB服务器平台)\conf\httpd.conf,在其中加入以下两行:
LoadModule fastcgi(现在已经不多人在用了)_module modules/mod_fastcgi(现在已经不多人在用了).dll
AddHandler fastcgi(现在已经不多人在用了)-script .fcgi(现在已经不多人在用了) .fpl
以上第一行是说,在apache(Unix平台最流行的WEB服务器平台)启动的时候自动载入mod_fastcgi(现在已经不多人在用了).dll模块,第二行是说Fastcgi(现在已经不多人在用了)的文件识别名称, 好让系统知道哪些是Fastcgi(现在已经不多人在用了)脚本,应该怎么去打开它(这里我们定义了两个文件后缀fcgi(现在已经不多人在用了)和fpl,当然你也可 以自己增加其他后缀)。就这样最简单的apache(Unix平台最流行的WEB服务器平台) Fastcgi(现在已经不多人在用了)配置就已经完成了。
完成您的第一个Fastcgi(现在已经不多人在用了)程序!
用PERL写Fastcgi(现在已经不多人在用了)是最方便不过了,有的只需要增加(修改)几行代码即可完成。下面我们来完成第一个Fastcgi(现在已经不多人在用了) 程序。现在大部分都使用ActivePerl的PERL解释器,如果你还没有,请下载一个吧(下载二),Fastcgi(现在已经不多人在用了)在PERL中 的实现我们采用一个名称叫Fcgi(现在已经不多人在用了)的软件包(下载三),这个包中提供了一些基本的Fastcgi(现在已经不多人在用了)函数,下面来进行安装 这个包,把Fcgi(现在已经不多人在用了).zip解压到任意目录,进入该目录后使用以下命令进行安装:
ppm install Fcgi(现在已经不多人在用了).ppd
如果无以外就说明该软件包已经成功安装在你的系统中,然后该轮到写程序的时候了,我们这里写一个最简单的 计数器程序,程序代码如下:
#!perl
#######################
# Fastcgi(现在已经不多人在用了) 计数器演示
# 作者 :王骜骋
#######################
use Fcgi(现在已经不多人在用了); # 使用Fcgi(现在已经不多人在用了)模块
my $count = 0; # 初始化变量$count为值0
while (Fcgi(现在已经不多人在用了)::accept() >= 0) { # 让程序进入循环状态
# Fcgi(现在已经不多人在用了)::accept 是Fcgi(现在已经不多人在用了)包中的函数
# 用来接受一个连接,如果连接成功则返回0
print "Content-Type:text/html\n\n";# 申明内容类型为HTML
print "你是第";
print $count++;# 输入计数器的值并增加1
print "位访问者";
}
把以上程序拷贝到一个后缀为fcgi(现在已经不多人在用了)或fpl的文件中,然后在浏览器中执行它即可。这时你按刷新就能看到计数器的值在不断的向上增加,通过这个原理,我们可以做出更多更好的程序,下面我们介绍一下留言本的编写技巧和原理。
Fastcgi(现在已经不多人在用了)的编程技巧!
以上的程序只是一个简单的计数器,如果真正投放到应用中,我们也不能只写计数器呀。下面我们来谈谈Fastcgi(现在已经不多人在用了)编 些留言本的一些使用技巧,编写留言本不像计数器只增加数字就可以了,留言本有很多字段,最简单的也要包含姓名 和内容,这样一来,访问时候就会带有很多参数值,Fastcgi(现在已经不多人在用了)在获取这些参数值的时候和一般的PERL程序不一样,因 为Fastcgi(现在已经不多人在用了)程序一直在内存中工作,如果使用一般的参数读取方法,很容易产生混淆,以导致程序无法正常工作。所以 我们使用另外一个模块cgi(现在已经不多人在用了)中的子集Fast(备注:cgi(现在已经不多人在用了)是一个相当出名的模块,其中包含的函数相当丰富,比如上传、获 取表单、浏览器COOKIE值、Server Push等等),下面来看看留言本的编写过程:
#!perl
#######################
# Fastcgi(现在已经不多人在用了) 留言本演示
# 文件名称:guest.fcgi(现在已经不多人在用了)
# 作者 :王骜骋
#######################
use cgi(现在已经不多人在用了)::Fast qw(:standard);# 使用cgi(现在已经不多人在用了)模块的Fastcgi(现在已经不多人在用了)子集
my $data_file = "data.txt";# 指定数据库文件名称
while (my $cgi(现在已经不多人在用了) = new cgi(现在已经不多人在用了)::Fast) {
print "Content-Type:text/html\n\n";
my ($rw);# 本地变量申明
$rw = $cgi(现在已经不多人在用了)->param("rw");# 读取表单值,判断是读取还是写入
if ($rw eq "r" || $rw eq "") {
print qq~
<form name="" action="guest.fcgi(现在已经不多人在用了)" >
<p>姓名:
<input type="text" name="name">
</p>
<p>留言:
<textarea name="content" wrap="VIRTUAL"></textarea>
</p>
<p>
<input type="submit" value="确定">
<input type="reset" value="清除">
<input type="hidden" name="rw" value="w">
</p>
</form>
~;
my @line = &Read_Data;# 获取数据库
foreach (@line) {# 输出留言内容
my ($name,$content) = split(/&&/,$_);
print qq~
姓名:$name
<br>
内容:$content
<hr>
~;
}
} else {
my $name = $cgi(现在已经不多人在用了)->param("name");
my $content = $cgi(现在已经不多人在用了)->param("content");
local $ok = 1;
if ($name eq "" || $content eq "") {
&Print_Erro("请填写完所有的内容!");
}
if ($ok) {
&Write_Data($name,$content);
&Print_Succ("留言成功!");
}
}
}
sub Read_Data {# 函数功能:读取数据库
open (FILE,$data_file);
my @line = <FILE>
close (FILE);
return @line;
}
sub Write_Data {# 函数功能:写入数据库
my ($name,$content) = @_;
open (FILE,">>$data_file");
print FILE "$name&&$content\n";
close (FILE);
}
sub Print_Succ {# 函数功能:输入成功页面
print qq~@_<a href="http://www.cncms.com.cn/cgi/java script:history.go(-1);">点击这里查看</a>~;
}
sub Print_Erro {# 函数功能:输入错误页面
$ok = 0;
print qq~@_<a href="http://www.cncms.com.cn/cgi/java script:history.go(-1);">点击这里返回</a>~;
}
作者结束语:试用了以上的程序有何感想?是不是速度飞快?该文章是作者使用Fastcgi(现在已经不多人在用了)后的一些经验和感想,如果文章中出现语法错误或系统错误,请大家不吝赐教
- 最新文章
- perl在win32平台上直接操作打印机[04-15]
- OSCON Perl Guru 波特兰小电影 - Perl ..[04-15]
- PerlScript编写ASP[04-15]
- 大家有没有碰到过unix上,一个目录文件太多,无法删除的现象..[04-15]
- 网站 PAGEVIEW 分析系统 CGI[04-15]
- 实战 FastCGI[04-15]
- 相关文章
- perl在win32平台上直接操作打印机[04-15]
- OSCON Perl Guru 波特兰小电影 - Perl ..[04-15]
- PerlScript编写ASP[04-15]
- 大家有没有碰到过unix上,一个目录文件太多,无法删除的现象..[04-15]
- 网站 PAGEVIEW 分析系统 CGI[04-15]
- 实战 FastCGI[04-15]
