от Slavei Karadjov(1-03-2000)
рейтинг (18)
[ добре ]
[ зле ]
Вариант за отпечатване
Време е за нашата първа програма. Запишете я под името
test.pl
в /perl-bin директорията.
use strict;
print "Content-type: text/html\n\n";
foreach my $key (sort keys %ENV)
{
print "\"$key\" = \"$ENV{$key}\" \n";
}
За да я изпълните пишете във вашият браузър
http://localhost/perl-bin/test.pl
Тази команда трябва да ви покаже Environment обвивката на
вашата система.
При писането на програми в mod_perl трябва да се
съобразявате със следните неща
- когато се изпълнява програма тя се компилира и
се пази в паметта. При извикване на командата exit
вие изтривате програмата от памета което води до
обратен ефект. Затова използвайте винаги
командата Apache::exit вместо exit
- Ако искате програма ви да работи коректно
трябва винаги да инициализирате променливите.
Вземете за пример следната програма
#!/usr/local/bin/perl
print "Content-type: text/html\n\n";
++$i;
print $i;
Ако използвате стандартният Perl програма винаги ще
връща 1. Но при mod_perl всеки пък когато извикаме
програмата ще получаваме число по-голямо от
предишното с единица – 1, 2, 3, … Това е така защото
стойностите на променливите от програмата се пазят в
паметта и при всяко следващо
извикване променливата $i не се занулява.
- Всяко използване на командата fork води до
създаване на ново копие на сървъра в памета. Това
допълнително натоварва системата и забавя
бързодействието
За да разберете как да използвате mod_perl
максимално ефективно прочетете информацията на
следния адрес: http://perl.apache.org/tuning/
С mod_perl не само ускорявате изпълнението на Perl CGI
скриптовете но и добавяте нови възможности към
сървъра.
Например ако искате да получите информация за
състоянието на сървъра, за броя на компилираните
perl скриптове и допълнителни технически
подробности трябва да добавите следните редове в
конфигурационния файл:
<Location /perl-status>
SetHandler perl-script
PerlHandler Apache::Status
</Location>
Тук /perl-status не е физическа директория на вашият
сървър. Ако искате само локално да виждате тази
информация пишете:
<Location /perl-status>
SetHandler perl-script
PerlHandler Apache::Status
order deny,allow
deny from all
allow from 127.0.0.1
</Location>
В заключение ще кажа, че mod_perl не е панацея.
Бързодействието което постигате е за сметка на
повече използвана памет, тъй като всеки скрипт
който се изпълнява се кешира.
Ако паметта не е проблема за вас и единственото
ви желание е по-бърз сайт то тогава комбинирането
на мощта на Apache и mod_perl е за вас.
Тази статия и други полезни може да прочетете във
следващия брой на вестник "PC Ревю"
<< Какви ФС могат да четат Linux,Windows 98 и NT | Apache + mod_perl (част 1) >>
|