[摘要]我们再看看如何用FastCGI来写这个程序: 示例二:NUMBER.FCGI #!/usr/bin/perl #为了使用FastCGI软件包,需要加入如下声明: Use FCGI; #初始化段和CGI初始化段一样。 # Variables my $End = 10; my $i; while (F...
我们再看看如何用FastCGI来写这个程序:
示例二:NUMBER.FCGI
#!/usr/bin/perl
#为了使用FastCGI软件包,需要加入如下声明:
Use FCGI;
#初始化段和CGI初始化段一样。
# Variables
my $End = 10;
my $i;
while (FCGIaccpet() 〉= 0) {
# Content Header
print ″Content-Type: multipart/x-mixed-replace;boundary=BOUNDARY\n\n″;
#因为每个请求都要有相应的Content-Type头标来响应,所以我们把它也作为响应循环的主体代码段。
# Main loop
for ($i=0;$i〈$End;$i++)
{ print "$i〈br〉;}
}
exit 0;
因为FastCGI和服务器应用程序一样运行,所以只有当FastCGI接收到结束信号时才退出,否则它就一直运行。
虽然,从CGI转向FastCGI是非常容易的,但在具体的应用实例中我们还要注意,如果原来的CGI程序中存在可能使主体代码不能正常循环运行的代码时,必须对它进行修改,即对一些变量、数组重新初始化。FastCGI应用程序必须保证在处理任何一个请求时,现有的任何状态都不能对后来的请求产生影响。另外,程序员在编写CGI程序时,模块化设计可以使主程序运行时对那些不经常用到的功能模块相对“独立",只有在需要时才被调入运行中,这样可以加快主程序的运行。但是在转向FastCGI应用时就要考虑尽量在一个程序段中完成相关的功能,以减少程序运行时产生的进程数,而且程序各功能块之间又能充分地共享缓存。
……