首 页 | 网页模板 | 教程 | 源码下载 | 书籍下载 | 图片素材 | 字体 | JAVA特效 | FLASH源码 | 软件 | 矢量 | 论坛 | 其它 |
设为主页
加入收藏
联系站长
平面设计 | 网页制作 | 程序编写 | 数 据 库 | 媒体动画 | 网络冲浪 | 服务器相关 |
当前在线
广告:P4服务器电信机房6999/年即送产权 | 疾风下载
生根于自由的土壤—FastCGI
2004-7-11 8:24:00  作者:  来源:未知 网友评论 0 条 论坛
  
如何编写FastCGI应用程序

  让我们先来看看FastCGI是如何运行的:

  正如你看到的一样, FastCGI在处理一个请求后继续保持运行,以便在新的请求到来时能立即处理请求。所以 FastCGI程序通常包括初始化代码段和封装程序主体的响应循环段,当然初始化完成后,主体程序不断循环运行等待请求的到来。只有在这个 FastCGI应用程序被系统撤销时循环才结束。

FastCGI的另一个优点就是从CGI转向 FastCGI非常简单,我们先来看一个传统的CGI:

示例一:NUMBER.CGI

#!/usr/bin/perl

# Variables

my $End = 10;

my $i;

# Content Header

print ″Content-type: text/html;CHARSET=gb2312\n″;

# Main loop

for ($i=0;$i〈$End;$i++)

{ print ″$i〈br〉;}

exit 0;

这个CGI在浏览器页面上从1到10按每行一个数字显示。

我们再看看如何用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应用时就要考虑尽量在一个程序段中完成相关的功能,以减少程序运行时产生的进程数,而且程序各功能块之间又能充分地共享缓存。

共分2页  [1] [2] 
>> 相关文章

关于网站 | 客服中心 | 服务条款 | 友情链接 | 广告联系 | 本站历程 | 网站导航

吉ICP备05000107号