от Slavei Karadjov(1-03-2000)

рейтинг (18)   [ добре ]  [ зле ]

Printer Friendly Вариант за отпечатване

Време е за нашата първа програма. Запишете я под името 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 трябва да се съобразявате със следните неща
  1. когато се изпълнява програма тя се компилира и се пази в паметта. При извикване на командата exit вие изтривате програмата от памета което води до обратен ефект. Затова използвайте винаги командата Apache::exit вместо exit
  2. Ако искате програма ви да работи коректно трябва винаги да инициализирате променливите. Вземете за пример следната програма


  3. #!/usr/local/bin/perl
    print "Content-type: text/html\n\n";
    ++$i;
    print $i;

    Ако използвате стандартният Perl програма винаги ще връща 1. Но при mod_perl всеки пък когато извикаме програмата ще получаваме число по-голямо от предишното с единица – 1, 2, 3, … Това е така защото стойностите на променливите от програмата се пазят в паметта и при всяко следващо извикване променливата $i не се занулява.

  4. Всяко използване на командата 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) >>