Ключевые слова:fastcgi, cgi, perl, web, (найти похожие документы)
Date: Sun, 24 Feb 2002 23:58:04 +0300
From: pavel kurnosoff <pavel.kurnosoff@f1061.n5030.z2.fidonet.org>
Newsgroups: fido7.ru.perl
Subject: Правильная структура программы для FastCGI
NS> По моему личному опыту, при большой посещаемости сервера (30-40
NS> посетителей единовременно) - вроде бы помогает, по крайней мере число
NS> процессов в памяти сокращается. А с другой стороны - дополнительные глюки
NS> возникают, не всегда обнуляются почему-то локальные переменные.
подробнее. где именно не обнуляются? кусок программы в студию.
вот правильная структура программы для fastcgi:
#!/usr/bin/perl
use strict;
# инициализация постоянных данных
my $dbh=DBI->connect();
my $somevar; # объявляем переменную
# основной цикл
while(my $req=new CGI::Fast) {
$somevar=undef; # явная инициализация
# делаем что-то с $req, $dbh и $somevar;
}
# clean-up
$dbh->disconnect;
проверь, действительно ли _все_ переменные инициализируются в правильных
местах? все те переменные, которые должны быть обнулены для каждого запроса,
должны быть обнулены _явно_!
другой вариант - обернуть тело программы в процедуру, скажем, main и сделать
так:
#!/usr/bin/perl
use strict;
# инициализация постоянных данных
my $dbh=DBI->connect(); # как пример переменной
# основной цикл
while(my $req=new CGI::Fast) {
main($req);
}
# clean-up
$dbh->disconnect;
sub main {
my $req=shift;
my $somevar;
# вот тут уже можно полагаться на то, что somavar будет undef.
}
NS> Ести ли какие-либо другие альтернативы для Perl'а при высоком уровне
NS> посещаемости? Драйвер "прямые руки" - не предлагать, уже имеется :-)
mod_perl. но лично я не советую.
--
.pk