`
purpen
  • 浏览: 786781 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

FastCGI中文参考手册(收藏)(三)

阅读更多
FastCGI的程序结构
===================
一个FastCGI的应用程序主要包含两部分:初始化部分、回应循环部分。

#初始化编码
#开始回应循环
#回应内容
#回应结束循环

#!/usr/bin/perl

#以下内容都是初始化部分
use FCGI;
my $count =0;
my $request = FCGI::Request();

#以下内容都是回应部分
while($request->Accept() >= 0) {
print “Content-type: text/html\n\n”;
print $count++;
}

当应用程序被初始化后,初始编码仅仅只运行一次。初始编码就像开启数据库和编译后的应用程序一样常常是十分耗时的操作。
整 个回应部分循环始复,直到客户要求终止。回应循环部分从调用FCGI_Accept开始。FCGI_Accept程序执行后会挂启程序(程序循环部分虽在 内存中,但是并不运行),除非客户对FastCGI应用程序发出请求。客户的请求一旦到达程序,FCGI_Accept会运行回应部分的内容一次,然后再 次中止程序,等待客户下一个请求的到来。整个回应循环部分只会在系统管理员或者Web服务器杀死了FastCGI应用程序后才能消除。

====================
FastCGI应用程序举例
====================
1.一个典型的FastCGI应用程序,这个程序将在初始化部分初始变量$count为0,每次请求运行都将累加一。

#!/usr/bin/perl
use FCGI;
use strict;

my $count = 0;
my $request = FCGI::Request;

while($request->Accept >=0){
$count++;
print “Content-type: text/html\n\n”;
print qq~
<HTML>
<HEAD>
<TITLE>FastCGI</TITLE>
</HEAD>
<BODY>请求已发生次数:$count
</BODY>
</HTML>~;
}

2.FastCGI程序为长生存期应用程序,如在设计中有缺陷会产生内存溢出问题,对服务器造成安全隐患。且这种溢出是不可预见性。本程序初始化了一个控制变量,一旦用户请求次数达到预先设置的数量程序结束,下一次请求将重新初始化。

#!/usr/bin/perl
use FCGI;
use strict;

my $count = 0;
my $request = FCGI::Request;
my $session_life = 1000;

while($request->Accept >=0){
$count++;
print “Content-type: text/html\n\n”;
print qq~
<HTML>
<HEAD>
<TITLE>FastCGI</TITLE>
</HEAD>
<BODY>请求已发生次数:$count
</BODY>
</HTML>~;

if ($count>$session_life) {
end;
}
}

======================
书写FastCGI的规范要求
======================
FastCGI应用程序对编写者提出了一种严格要求的挑战。

1.在程序头必须加载strict模块。格式为use strict;
2.任何变量的使用之前一定不要忘记声明变量my $variable;
3.不要将一些初始化的内容放在回应部分,这样不仅无法提高效率还会降低效率。例如对数据库的连接部分。
4.同样,也不要把什么东西都放在初始化部分。
5.在程序调试后发现有BUG或修改,请先直接修改程序。然后杀死系统中的程序进程,要不你的修改永远不被执行。如果杀不好,就重启Apache吧。

==================
FCGI.pm模块的使用
==================
模块名称:Fast CGI Module
使用格式:

use FCGI;
$request = FCGI::Request();
while($request->Accept() >=0) {
#CGI Process..
}


FCGI支持的使用方法:

FCGI::Request
$request = FCGI::Request(
$input_fh,
$output_fh,
$error_fh,
fileno($socket),
);
$input_fh,$output_fh,$error_fh是设置input/output/error的句柄,默认情况下分别是STDIN、STDOUT、STDERR

$socket的用处在分离FastCGI应用程序与Web服务器的情况下才需要使用。它允许程序通过设置的套接字与Web服务器通讯。

FCGI::OpenSocket(path, backlog)
在程序中创建一个套接字,在建立独立的FastCGI应用程序中用到。
FCGI::CloseSocket(socket)
关闭打开的FCGI::OpenSocket。
$request->Accept
当有新的请求产生,以上句子返回0,其他情况下返回-1。
$request->Attach
重新设置文件句柄连接到相关服务器上。
$request->Detach
临时分离文件句柄。
$request->Finish
结束当前请求,这本来由Accept来自动完成,但有写程序中在返回给客户请求后可能需要做一些其他工作,比如操作数据库。
$request->Flush
清洗当前连接中的所有输入输出。
$env = $req->GetEnvironment()
返回来环境变量。
($in, $out, $err) = $req->GetHandles()
返回标准文件句柄。
$isfcgi = $req->IsFastCGI()
返回当前程序运行的状态是否FastCGI。

========================
FastCGI的效率与应用范围
========================
效率这个词不仅仅一词出现过。我也不仅一次讲解过效率的由来。
现在所有的解释性语言(Perl、Java、Python)的运行效率,都要比编译形语言(ANSI C)慢的多(一到几十倍)。但奇怪的是,大家似乎看到的是Jsp/Servlet不错的效率。这是因为在网络世界中,对效率的影响不在语言的本身,而在以 下几个方面:1、技术模型 2、系统I/O带宽 3、程序设计。
FastCGI是一种半成熟(这样说是因为C语言成熟用了十多年,自今Java语言与C++语言都是不断在完善中)的技术,它经过多年的应用实践已经获得广泛的支持。
FastCGI技术适合各种程序设计上的要求,我们建议使用在以下要求中:
1.想使用J2EE以外的一种高效率OpenSource技术。
2.分布式数据库控制系统
3.高访问量页面访问系统
4.性能评测
5.混毕业设计
分享到:
评论

相关推荐

    Fastcgi 中文参考手册(DOC).rar

    软件介绍 Fastcgi 中文参考手册

    Fastcgi 中文参考手册(DOC)

    软件介绍 Fastcgi 中文参考手册 Tags: Fastcgi 中文参考手册(DOC)

    Fastcgi中文参考手册 doc

    那么本文所描述的所有内容仅限于一种可以大幅度提高页面处理技术的东东,它的名字叫FastCGI,他的速度效率最少要比CGI技术提高5倍以上(要知道目前各种流行的页面处理技术ASP、PHP、JSP/Servlet还没有哪个能超过)。...

    nginx+fastcgi编译与移植手册

    nginx fastcgi 编译与移植 手册 nginx fastcgi 编译与移植 手册 nginx fastcgi 编译与移植 手册

    fastcgi中文手册.pdf

    NULL 博文链接:https://mengdejun.iteye.com/blog/985372

    Fastcgi中文手册

    FastCGI像是一个常驻(long-live)型的CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去fork一次(这是CGI最为人诟病的fork-and-execute 模式)。它还支持分布式的运算, 即 FastCGI 程序可以在网站服务器以外...

    FASTCGI中文手册

    想必所有人都了解CGI技术的通用性与效率有多糟糕。那么本文所描述的所有内容仅限于...大家一定惊讶,既然有这种技术为什么我们还要编写这本参考手册,原因显而易见,虽然此技术已经产生自今,但中文资料还是少的可怜。

    FastCGI手册

    FastCGI规范和详细的例子

    fastcgi c++

    fastcgi fastcgi fastcgi fastcgi fastcgi

    fastcgi头文件和库

    fastcgi头文件和库

    IIS FASTCGI安装程序

    用于IIS的FASTCGI模块安装包,版本1.5RC

    基于FastCGI的分布式集群WebGIS研究.pdf

    #资源达人分享计划#

    Java的FastCGI网关 jFastCGI

    Java的FastCGI网关 jFastCGI

    FastCGI SDK

    FastCGI的官方开发包,包含C, C++, Perl, Java, 库等文档与开发资源。(FastCGI官网已经打不开了 QwQ)

    FastCGI 下载FastCGI for IIS6下载 1.5(32位&64位)

    FastCGI 1.5 for IIS6,fastcgi.dll本身不具备解析脚本的能力他的作用是调度php的解析程序处理PHP。内含32位和64位两个版本。

    win2003下搭建FastCGI php5.2.17

    因为之前安装的西数版集成PHP环境出现了phpMyAdmin无法显示中文等各种错误,所以被迫无奈重装服务器,在网上浏览的时候无意的发现PHP5.3的全新特效及改进,原有的ISAPI方式解析PHP脚本已经不被支持,PHP从5.3.0以后...

    fastcgi.zip

    fastcgi2.4.1 安装: ./configure make make install 现在官网已经没有了

    fastcgi-2.4.0安装包

    将它直接在win系统下解压,然后传到linux上就可以直接安装了

    mod_fastcgi-2.4.6.tar.gz

    [原创] Redhat 上 FastCGI 安装与配置 软件包 相关软件包: httpd httpd-devel fcgi-2.4.0.tar.gz mod_fastcgi-2.4.6.tar.gz 请仔细阅读其中的README 配置httpd.conf: LoadModule fastcgi_module modules/mod_...

    lighttpd fastcgi

    5.注意fastcgi程序编译方式 进入cgi-bin目录中编译方式如下 2228 gcc -o caoft.fcgi echo.c -lpthread -lfcgi 2229 gcc -o caoft.fcgi size.c -lpthread -lfcgi 2230 gcc -o caoft.fcgi threaded.c -lpthread -...

Global site tag (gtag.js) - Google Analytics