LINUX-BG   Адрес : http://www.linux-bg.org
Apache + mod_perl (част 2)
От: Slavei Karadjov
Публикувана на: 1-03-2000
Адрес на статията: http://www.linux-bg.org/cgi-bin/y/index.pl?page=article&id=advices&key=317300182
Време е за нашата първа програма. Запишете я под името 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) >>

Авторите на сайта, както и техните сътрудници запазват авторските права върху собствените си материали публикувани тук, но те са copyleft т.е. могат свободно да бъдат копирани и разпространявани с изискването изрично да се упоменава името на автора, както и да се публикува на видно място, че те са взети от оригиналния им URL-адрес на този сървър (http://www.linux-bg.org). Авторските права на преводните материали принадлежат на техните автори. Ако с публикуването тук на някакъв материал неволно са нарушени нечии права - след констатирането на този факт материалът ще бъде свален.

All trademarks, logos and copyrights mentioned on this site are the property of their respective owners.
Linux is copyright by Linus Torvalds.
© Линукс за българи ЕООД 2007
© Slavei Karadjov 1999 - 2006

All rights reserved.

Изпълнението отне: 0 wallclock secs ( 0.17 usr + 0.03 sys = 0.20 CPU)