2. 安装 fastcgi 要使用 fastcgi 你必需有一个可供 fastcgi 程序执行的环境 (run-time environment),以及 撰写 fastcgi 程序的开发环境。以下就以阿帕契服务器 (apache web server) 做为 fastcgi 的执行平台,简述如何在阿帕契服务器使用 fastcgi。 由于阿帕契服务器自由、开放、跨平台的特性,现今许多系统或发行套件 (distribution) 都内含阿帕契服务器,如果你直接用预先编译好的阿帕契程序,请自行找出符合该系统设定规则的安装路径。以下列出一些阿帕契服务器相关的路径设定规则,后面的范例将以阿帕契内定值为主,其它的系统请自行参考: 系统 执行文件路径 设定文件路径 阿帕契内定值 /usr/local/apache/bin /usr/local/apache/etc freebsd /usr/loca...
1.3 更好的方法 - fastcgi 如果你正饱受 cgi 效率不佳之苦,又不想受限于 nsapi 及 isapi ,也没有大笔银子去买昂贵的 application server,我建议你试试看 fastcgi。 不同于 nsapi 及 isapi 以及其它的网页服务器语言 (如 asp, php3, mod_perl),fastcgi 比较类似 cgi,它只是一个网站应用程序设计的规格,因此先天上不受任何网站服务器平台,操作系统平台,以及开发语言的限制,但又能大幅改善 cgi 效率不良的问题。fastcgi 的特色如下: 1. fastcgi 像是一个常驻 (long-live) 型的 cgi,它可以一直执行着,只要激活后,不会每次都要花费时间去 fork 一次 (这是 cgi 最为人诟病的 fork-and-execute 模式)。 2. fastcgi 可在任何平台上使用...
1.2 一些解决之道 现在已经有许多方案被提出来以解决 cgi 执行效率上的瓶颈,在『用 fastcgi 加速你的网站』一文中也有简单的说明,这里仅就笔者在开发股市实时报价的网站应用程序时,所尝试过的一些方法提出个人的经验和意见。以笔者的案例而言,原本的 cgi 程序是以 c 语言写的,并且用了其它的 c 函式库所以下列的方法主要是以提供 c 语言开发环境的方案为主。 nsapi 由于原先网站是在 unix 系统上,网站服务器使用网景 enterprise server,所以最早想到是用 nsapi 来改写网站应用程序。在网景的网站上有非常详细的 nsapi 使用手册,不幸的是没有中文手册。要用 nsapi 改写网站应用程序最麻烦的是你要把所有程序编译成动态函式库 (share library),以供 enterprise server 在 run-time 时期可以动态呼叫这些程序。由...
1. 克服 cgi 的瓶颈 1.1 令人头痛的效率问题 拜 cgi 之赐,网站不再只有固定不变的图形和文字,藉由程序动态产生的网页可以让网站好象『活』了起来。小从简单的网页计数器,留言版,大至处理众多资料的搜寻引擎,可做线上实时交易的电子商务、网络下单等。cgi 简单、开放、跨平台、与程序语言独立的特性,使得撰写网站应用程序变得很容易。 但随着网站使用量日增,这些 cgi 程序从原本动态网页的功臣,突然成了网站效率的头号杀手。由于 cgi 先天的限制1,突然涌入大量的联机请求 (request) ,常会造成网站主机瞬间资源被占用,彷佛『当机』一样,或是处理速度变得很慢。 另一个常遇到的限制是和数据库联机的问题,如果 cgi 程序后端需要联机至数据库执行指令再取得结果,突然大量的联机请求可能会超过数据库系统容许联机的上限 (例如数据库系统使用者数目的限制)。 因此对一个主要以使用 c...
abstract: 当网站日益走红,联机人数直线上升而心中暗自窃喜之时,突然客服中心涌来大批反应电话:『网站连不上去』、『按下去等好久画面才出来』、『一直出现 server too busy...』...。看来又要把硬件升级了,但是再加更多的内存,更多 cpu、换更贵的机器真的能解决问题吗?有没有比较省钱的方法呢?本文将介绍如何在阿帕契服务器上安装 fastcgi 的模块,如何设定及使用 fastcgi 网站应用程序,让你的网站程序在现有的架构上以全速执行。 - 1. 克服 cgi 的瓶颈 1.1 令人头痛的效率问题 1.2 一些解决之道 1.3 更好的方法 - fastcgi 2. 安装 fastcgi 2.1 在阿帕契服务器上安装 fastcgi 模块 2.1.1 标准安装 (利用 apaci) 2.1.2 将 mod_fastcgi 安装成一个 dso 2.2 加入使用 mod_...
2、导入模块将模块导入你的perl程序中使用use语句,如下句导入了mymodule模块:use mymodule;这样,模块mymodule中的子程序和变量就可以使用了。取消导入模块使用no语句,如下句取消了mymodule模块的导入:no mymodule;下面看一个导入模块和取消导入的例子,使用integer模块要求所有数字运算基于整数,浮点数在运算前均被转化为整数。1: #!/usr/local/bin/perl2:3: use integer;4: %24result = 2.4 + 2.4;5: print ("%24resultn");6:7: no integer;8: %24result = 2.4 + 2.4;9: print ("%24resultn"); 程序输出如下:%24 program44.8%24 如果use或no语句出现在语句块中,则只在该块的有效范围内起作用,如:use i...
三、模块多数大型程序都分割成多个部件,每一部件通常含有一个或多个子程序及相关的变量,执行特定的一个或多个任务。集合了变量和子程序的部件称为程序模块。1、创建模块perl 5中用包来创建模块,方法是创建包并将之存在同名的文件中。例如,名为mymodult的包存贮在文件mymodult.pm中(扩展名.pm表示perl module)。下例的模块mymodult含有子程序myfunc1和myfunc2及变量%24myvar1和%24myvar2。1 : #!/usr/local/bin/perl2 :3 : package mymodule;4 : require exporter;5 : @isa = qw(exporter);6 : @export = qw(myfunc1 myfunc2);7 : @export_ok = qw(%24myvar1 %24myvar2);8 :9 : sub myfun...
5、指定无当前包在perl 5中,可以用如下语句指定无当前包:package;这时,所有的变量必须明确指出所属包名,否则就无效--错误。%24mypack::var = 21; #ok%24var = 21; #error - no current package这种情况直到用package语句指定当前包为止。6、包和子程序包的定义影响到程序中的所有语句,包括子程序,如:package mypack;subroutine mysub {local (%24myvar);# stuff goes here} 这里,mysub和myvar都是包mypack的一部分。在包mypack外调用子程序mysub,则要指定包:%24mypack'mysub。可以在子程序中切换包:package pack1;subroutine mysub {%24var1 = 1;package pack2;%24var1 = 2;} 这...
二、包perl程序把变量和子程序的名称存贮到符号表中,perl的符号表中名字的集合就称为包(package)。1、包的定义在一个程序中可以定义多个包,每个包有一个单独的符号表,定义语法为:package mypack;此语句定义一个名为mypack的包,从此以后定义的所有变量和子程序的名字都存贮在该包关联的符号表中,直到遇到另一个package语句为止。每个符号表有其自己的一组变量、子程序名,各组名字是不相关的,因此可以在不同的包中使用相同的变量名,而代表的是不同的变量。如:%24var = 14;package mypack;%24var = 6; 第一个语句创建变量%24var并存贮在main符号表中,第三个语句创建另一个同名变量%24var并存贮在mypack包的符号表中。2、在包间切换在程序里可以随时在包间来回切换,如:1: #!/usr/local/bin/perl2: 3: package p...
一、require函数用require函数可以把程序分割成多个文件并创建函数库。例如,在myfile.pl中有定义好的perl函数,可用语句require ("myfile.pl"); 在程序中包含进来。当perl解释器看到这一语句,就在内置数组变量@inc指定的目录中寻找文件myfile.pl。如果找到了,该文件中的语句就被执行,否则程序终止并输出错误信息:can't find myfile.pl in @inc作为子程序调用参数,文件中最后一个表达式的值成为返回值,require函数查看其是否为零,若为零则终止。例如myfile.pl最后的语句是:print ("hello, world!n");%24var = 0;因为最后的语句值为零,perl解释器输出下列错误信息并推出:myfile.pl did not reture true value可以用简单变量或数组元素等向requi...
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器