我正在重写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";
}
答案 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等模块。