我应该将我的Perl库和CGI程序合并到FastCGI的一个文件中吗?

时间:2010-11-05 15:46:26

标签: perl fastcgi

我正在重写CGI脚本以使用fastcgi模块。我的初始程序包含两个脚本。一个“需要”另一个。在效率方面,我是否需要重新考虑整个“require”脚本并将它们合并到一个文件中?脚本可以总结如下:

脚本A:

use FCGI;
# Do a lot of stuff and slurping (memory intensive)
sub use_my_slurped {
# Do sub here
}

sub use_my_slurped2 {
# Do sub here 
}

###############
# EOF A#
###############


Script B:
require A;

while (FCGI::accept >= 0) {
# main program functions
$blah = use_my_slurped (X,Y,Z)
print "Some HTML stuff $blah"; 
}

2 个答案:

答案 0 :(得分:1)

首先,A不是脚本,而是perl库。

其次,FastCGI可以不加修改地优雅地处理它。这取决于A是否是完全限定的文件名。

第三,很少有工作A可以成为一个模块,然后一切都应该工作。

# A.pm
sub func1 {}
sub func2 {}

1;

然后

# B.cgi
use lib qw( /path/to/dir/containing/above );
use A;
# ...
my $blah = func1();

答案 1 :(得分:1)

将它们作为单独的文件留下应该没有问题。 FastCGI不需要为每个请求加载和编译库,因此启动时间并不像普通的CGI那样大。除非你正在寻找可以解决的问题,否则我可能只是不管它。

但是,如果库以某种奇怪的方式编写,您需要根据请求加载一次,那就是另一个故事。

对于您的示例,我认为您需要将所有FastCGI内容移动到同一个文件中。您可以在要使用该模块中的内容的文件中加载FCGI等模块。