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中文参考手册》是一本专注于FastCGI技术的详细教程,旨在帮助开发者深入理解和有效运用这一高效、稳定的Web服务器接口技术。FastCGI是用于提高动态内容生成速度的一种协议,它允许Web服务器与长期运行的...
**FastCGI 中文参考手册概述** FastCGI 是一种用于 Web 服务器和应用程序之间通信的协议,它旨在提高网站性能,特别是在处理动态内容时。FastCGI 的设计目标是克服 CGI(Common Gateway Interface)的性能瓶颈,...
### FastCGI中文参考手册知识点总结 #### 快速概览 FastCGI是一种用于提高Web应用程序性能的技术,尤其在处理动态内容时表现卓越。它通过优化进程管理机制,显著提升了处理请求的速度,并且能够更好地利用系统资源...
《FastCGI中文手册》是IT领域中关于Web服务器与应用程序接口的重要参考资料,它详细介绍了FastCGI协议的原理、实现以及应用。FastCGI是一种用于提高动态内容生成速度的技术,它通过持久连接来减少每次请求时的启动和...
【FastCGI中文手册】是一本专注于FastCGI技术的参考文档,主要针对Perl语言进行讲解。FastCGI作为一种高效的技术,比传统的CGI技术在处理页面时的效率至少提升了5倍,它并非新技术,但在中文资料方面相对匮乏。手册...
### FastCGI中文手册知识点概览 #### 一、FastCGI简介与优势 FastCGI作为一种高性能的网络应用程序接口,旨在解决传统CGI(通用网关接口)存在的问题,尤其是针对CGI每次请求都需要创建新进程所带来的性能瓶颈。...
### FastCGI手册知识点解析 #### 一、FastCGI技术概述 FastCGI是一种用于提高Web应用程序性能的技术,尤其适用于提高动态网页处理的速度。它通过优化传统的CGI(Common Gateway Interface)模型,解决了CGI效率低下...
根据提供的文件内容,我们可以整理出关于Nginx+FastCGI编译与移植的知识点,这些知识点详细地描述了在不同操作系统环境下准备、编译和移植Nginx以及其模块的过程。 1. 准备工作 在开始编译和移植之前,需要下载...
Apache HTTP服务器2.0中文参考手册是一份详细的技术文档,旨在帮助用户理解并有效地管理和配置Apache HTTP Server 2.0版本。Apache HTTP Server是全球最广泛使用的开源Web服务器,以其稳定性、灵活性和强大的功能而...
fastcgi fastcgi fastcgi fastcgi fastcgi
3. **FastCGI中文参考手册.doc**:提供了官方或社区编写的中文文档,包括API接口、错误代码和配置选项。 4. **深入研究FastCGI 第一步.doc**:可能是一篇逐步教程,引导读者深入理解FastCGI的内部机制和高级特性。 5...
标题中的“fastcgi-2.4.0安装包”指的是FastCGI的2.4.0版本,这是一个软件包,用于在Linux系统中部署和管理FastCGI服务。此版本可能包含了一些性能优化和新的功能特性,以便更好地支持现代Web环境。 描述中提到的...
《PHP4中文参考手册》是学习PHP编程语言的重要参考资料,尤其对于初学者和有经验的开发者来说,都是一本极具价值的工具书。这本手册详细介绍了PHP4版本的语法、函数、对象模型以及错误处理等多个方面,帮助读者深入...
为了解决WebGIS中效率和服务器端压力过大的问题,研究者提出了基于FastCGI的分布式集群WebGIS构建方案。 FastCGI是一种常用于高性能Web服务器、数据库服务器和应用服务器的通信协议,支持多进程,能够有效处理并发...
这份"Apache中文参考手册(更新2009)"是针对中文用户特别准备的,它为学习和理解Apache服务器的配置、管理和优化提供了详尽的指导。手册的重要性在于它能够帮助初学者快速上手,并为经验丰富的开发者提供必要的参考...
**FastCGI SDK详解** FastCGI是一种常用于Web服务器上的接口协议,它允许外部程序(如PHP、Perl、Python等脚本语言解释器)作为Web服务器的动态内容生成器,提高了网站性能和响应速度。FastCGI的核心设计目标是避免...
这本“Apache参考手册”将为你提供全面的指导,帮助你理解并熟练运用Apache的各项功能和配置选项。 Apache服务器的核心特性包括: 1. **模块化设计**:Apache通过模块化结构来扩展其功能,用户可以根据需要选择和...
Apache2.2中文版参考手册是一份详尽的文档,旨在帮助用户理解和配置Apache ...通过学习这份中文版参考手册,无论是初学者还是经验丰富的管理员,都能从中获得对Apache2.2的全面认识,并提升自己的服务器管理技能。
**FastCGI技术详解** FastCGI是一种常用于提高Web服务器性能的技术,它作为一个接口,允许Web服务器与外部应用程序(如PHP解释器)进行高效通信。FastCGI的主要优势在于它可以长时间保持活动状态,避免了每次请求都...