Должен ли я объединить мою библиотеку Perl и программу CGI в один файл для FastCGI? - PullRequest
0 голосов
/ 05 ноября 2010

Я переписываю CGI-скрипт для использования модуля fastcgi. Моя начальная программа состоит из двух скриптов. Одно «требует» другого. С точки зрения эффективности, нужно ли переосмыслить весь сценарий «требуется» и объединить их в один файл? Сценарии могут быть кратко изложены ниже:

Сценарий А:

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 ]

1 голос
/ 06 ноября 2010

Не должно быть проблемы, оставляя их в виде отдельных файлов. FastCGI не нужно загружать и компилировать библиотеку для каждого запроса, поэтому время запуска не так уж важно, как в обычном CGI. Если вы не ищете вещи для работы, я бы, вероятно, просто оставил это в покое.

Однако, если библиотека была написана каким-то странным образом, где вам нужно загружать ее один раз для каждого запроса, это другая история.

Для вашего примера, я думаю, вам нужно переместить все элементы FastCGI в один файл. Вы загружаете модули, такие как FCGI, в файл, который вы хотите использовать из этого модуля.

1 голос
/ 05 ноября 2010

Во-первых, A - это не скрипт, а библиотека Perl.

Во-вторых, FastCGI может обработать это изящно без изменений. Это зависит от того, является ли A полностью определенным именем файла или нет.

В-третьих, очень мало будет работать, А может стать модулем, и тогда все должно просто работать.

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

1;

А потом

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