Главная страница


ru.cgi.perl

 
 - RU.CGI.PERL ------------------------------------------------------------------
 From : Andrey Chernomyrdin                  2:5020/400     27 Aug 2002  00:05:09
 To : All
 Subject : about mod_perl
 -------------------------------------------------------------------------------- 
 
 Have a nice day!
 
 Вот уже который день читаю:
 
 http://perl.apache.org/
 man mod_perl
 man Apache::*
 
 Hо никак не могу понять как правильно написать конфигурацию для apache...
 
 Сам скрипт написан на CGI и использует template toolkit.
 
 Используется virtual server и все параметры для mod_perl задаются через
 .htaccess
 # .htacess
 PerlModule      Apache::PerlRun
 PerlModule      CGI
 PerlModule      CGI::Carp
 PerlModule      Template
 PerlModule      Compress::Zlib
 
 PerlHandler     Apache::PerlRun
 # PerlHandler   Apache::Registry
 # PerlHandler   index
 PerlSendHeader  on
 allow from      all
 Options         ExecCGI
 #
 
 Собственно index.cgi:
 #!/usr/bin/perl -w --
 package index;
 
 use strict;
 use lib qw(. lib);
 
 use Apache::Constants qw(:common);
 use CGI qw(-oldstyle_urls -nosticky -no_xhtml);
 use CGI::Carp qw(fatalsToBrowser warningsToBrowser);
 use Template;
 use Compress::Zlib;
 
 use Site; # это мой модуль.
 
 my      %Template       = (
                 1       => { start      => 'index.html', },
                 3       => { start      => 'not_yet.html', },
                 4       => { start      => 'links.html', },
                 6       => { start      => 'exchange.html', },
         );
 my      $Charset        = 'windows-1251';
 &main;
 
 sub main {
   my $site = Site->new(
    -base  => '.',
    -index  => 'index.cgi',
    -opt   => {
       menuwidth => 140,
       mailto => 'mailto:mailto@site.ru',
       charset => $Charset,
    },
   );
   my $t = Template->new(
                 INCLUDE_PATH    => 'templ',     # or list ref
                 POST_CHOMP      => 1,           # cleanup whitespace
                 EVAL_PERL       => 1,           # evaluate Perl code blocks
                 VARIABLES       => {},
 #               PRE_PROCESS     => 'header',    # prefix each template
 #               INTERPOLATE     => 1,           # expand "$var" in plain text
   );
 
   my ( $id, $rc, $content, $q );
 
         # Begin request processing...
   $q = CGI->new;
         $pid = int( $q->param( 'id' ) || 0 ) || 1;
         $pid = 1
                 if( not exists $Template{$id} );
         $q->param( pid => $id );
         $site->cgi( $q ); # set CGI object
 
         $content= '';
         $rc = $t->process( $Template{$id}->{start}, { id => $id, site => $site
 }, sub { $content .= $_[0] } );
 
         unless( $rc ) {
                 $content = join( '', $q->header, $q->start_html( -title =>
 'Template error' ),
                         $q->p( 'Template ', $Template{$pid}->{start}, ' process 
 failed, error: ', $t->error() ),
                         $q->end_html );
         }
         
         if( length $content ) {
                 my %header;
 #               my $acc_enc = $q->http( 'Accept-encoding' ) || '';
 
                 $content .= "\n";
 #               if( $acc_enc =~ /(x-gzip|gzip)/ ) {
 #                       $header{-Content_Encoding} = $1;
 #                       $content = Compress::Zlib::memGzip( $content );
 #               }
                 print $q->header( -type => "text/html; charset=$Charset",
 -charset => $Charset,
       -Content_Length => length( $content ), %header ), $content;
         }
         # end request processing
 }
 # for mod_perl
 sub handler {
         my $r = shift;
 
         $r->send_http_header('text/plain');
         print "mod_perl handler is OK\n";
         return OK;
 }
 
 1;
 
 Что-бы хотелось:
 Что-бы все модули используемые загружались только один раз, что-бы объекты $site
 и $t не создавались каждый раз, а только при первой загрузке и $q получался с
 параметрами  текущего запроса. Изначально все это писалось под FastCGI, но на
 другом хостинге FastCGI нету а есть mod_perl ну и соответственно все приходится 
 перекраивать.
 
 -- 
 With Best,
   Andrey <andrey@excom.spb.su>
 --- ifmail v.2.15dev5
  * Origin: X-Com Online (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 about mod_perl   Andrey Chernomyrdin   27 Aug 2002 00:05:09 
 Re: about mod_perl   Artem Chuprina   27 Aug 2002 13:15:02 
 Re: about mod_perl   Andrey Chernomyrdin   28 Aug 2002 00:11:49 
 Re: about mod_perl   Artem Chuprina   28 Aug 2002 09:28:13 
 Re: about mod_perl   Andrey Chernomyrdin   28 Aug 2002 19:27:03 
 Re: about mod_perl   Artem Chuprina   28 Aug 2002 19:51:27 
Архивное /ru.cgi.perl/642661dc408b.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional