П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 3524 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 6122 раз(а).

Учебник HTML.
Просмотров 3276 раз(а).

Руководство по PHP5.
Просмотров 5499 раз(а).

Хостинг через призму DNS.
Просмотров 4148 раз(а).

Подборка текстов стандартных документов.
Просмотров 55773 раз(а).

Учебник PHP - Самоучитель
Просмотров 3093 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 5751 раз(а).

Внешние атаки...
Просмотров 3843 раз(а).

Учебник PHP.
Просмотров 2826 раз(а).

SSI в примерах.
Просмотров 37463 раз(а).



 
 
| Добавить в избранное | Сделать стартовой | Помощь





Perl-модуль "mod_perl rules" Apache

mod_perl готов для работы как со скриптами, так и с обработчиками. Я даже уже начал показывать использование скриптов в mod_perl , поскольку гораздо проще, если CGI-скрипты вы уже написали ранее, а наиболее отлаженным механизмом в mod_perl является написание программ обработки. Но не пугайтесь. Как вы увидите через мгновение, писать программы обработки так же просто, как скрипты.

Чтобы создать модуль обработчика в mod_perl все, что мне нужно сделать - это заключить код, который я использовал для скрипта, в подпрограмму handler, добавить предписание вернуть код состояния серверу при успешном окончании работы подпрограммы и поместить объявление пакета в начало кода.

Если вы привыкли, то, как и со скриптами, можно использовать CGI API:

ModPerl/Rules1.pm
  ----------------
  package ModPerl::Rules1;
  use Apache::Constants qw(:common);

  sub handler{
    print "Content-type: text/plain\r\n\r\n";
    print "mod_perl rules!\n";
    return OK;
  }
  1; # satisfy require()

или Apache Perl API, позволяющий вам более тесно взаимодействовать с ядром Apache, обеспечивая наличие API, который не доступен под обычным Perl. Конечно, для приведенного мной простейшего примера хорош любой способ, но когда вам понадобится воспользоваться API, следует использовать эту версию кода:

ModPerl/Rules2.pm
  ----------------
  package ModPerl::Rules2;
  use Apache::Constants qw(:common);

  sub handler{
    my $r = shift;
    $r->send_http_header('text/plain');
    print "mod_perl rules!\n";
    return OK;
  }
  1; # satisfy require()

Создайте директорию с именем ModPerl в одной из директорий в @INC (например, /usr/lib/perl5/site_perl/5.005), и поместите в нее файлы Rules1.pm и Rules2.pm, которые содержат код из приведенных выше примеров.

Чтобы выяснить, что из себя представляют директории @INC выполните:

% perl -le 'print join "\n", @INC'

На моей машине выводится следующее сообщение:

/usr/lib/perl5/5.6.1/i386-linux
  /usr/lib/perl5/5.6.1
  /usr/lib/perl5/site_perl/5.6.1/i386-linux
  /usr/lib/perl5/site_perl/5.6.1
  /usr/lib/perl5/site_perl
  .

Теперь добавьте приведенный ниже фрагмент в файл httpd.conf, чтобы настроить mod_perl выполнять подпрограмму ModPerl::Rules::handler во всех случаях, когда вы делаете запрос к mod_perl_rules1:

PerlModule ModPerl::Rules1
  <Location /mod_perl_rules1>
    SetHandler perl-script
    PerlHandler ModPerl::Rules1
  </Location>

Теперь можете направить запрос на

http://localhost/mod_perl_rules1

и так же, как в случае со скриптами mod_perl_rules.pl в качестве ответа вы увидите:

mod_perl rules!

Чтобы протестировать второй модуль <ModPerl::Rules2> добавьте такую же настройку, только замените все 1 на 2:

PerlModule ModPerl::Rules2
  <Location /mod_perl_rules2>
    SetHandler perl-script
    PerlHandler ModPerl::Rules2
  </Location>

И для проверки используйте сылку:

http://localhost/mod_perl_rules2

[Назад] [Содержание] [Вперед]



Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту: