Home Links
Home Page
Use XML in PHP
Compression of the data on PHP
Use mod_perl
Style of coding on PHP
Perl and XML. Library of the programmer
Access to databases under management SUBD POSTGRES95
Parsing on Perl
XMLHttpRequest (AJAX) - sending and processing of answers of http-searches with help JavaScript.
Subsys_JsHttpRequest: pumping of the data without perezagruzki pages (AJAX)
The brief description of regular expressions: POSIX and PCRE
Optimization of searches in MySQL
Wound of treelike structures in Databases (Nested Sets)
Oracle / PHP FAQ
The specification and functions DOM in PHP
Not kehshirovat`!
Report PPP
Useful advice{councils} on optimization of ASP-applications
XML: time has come
 

Use mod_perl

Mod_perl Is About module Apache realizing Perl the interpreter + set Perl of modules, giving the following interesting opportunities:


1. Caching otkompilirovanykh cgi scripts (Apache:: Registry.pm)

2. Perl the interface to C API Apache


The majority of developers use mod_perl to increase productivity of the scripts - Apache does not start new process at each search to script.pl since has now the Perl the interpreter, and does not compile script.pl at each search since Apache:: Registry.pm stores{keeps} yours otkompilirovanye scripts in a cache. Perl the interface to C API Apache is used by developers not so often.



As it looks - typical use mod_perl.

We have compiled Apache with support mod_perl, at us is script.pl:



*!/usr/bin/perl

use strict;

use CGI qw (:cgi);

print header (), ' Hi, people! ';


And we want, that the script was carried out by the interpreter mod_perl and kehshirovalsja. For this purpose we change httpd.conf:



* It we zakommentiruem

**** ScriptAlias/cgi-bin/«/home/my-project.ru/cgi-bin / »

* And it we shall add

PerlModule Apache:: Registry

<Location/cgi-bin> SetHandler perl-script PerlHandler Apache:: Registry

Options ExecCGI

allow from all

</Location>


Let's restart Apache and we shall be convinced, that all works.



Konfigurirovanie mod_perl.


Let's understand with that, that we have written in httpd.conf.

Mod_perl Defines{Determines} Apache handler with a name "perl-script". The following recording:



<Location/cgi-bin> SetHandler perl-script </Location>


Means, that searches to/cgi-bin will be processed with a code mod_perl.

Mod_perl Defines{Determines} also some directives:



PerlModule Some:: Module Other:: Module


- The directive loads ukazanye Perl modules. The scripts which are carried out under mod_perl, can use them, not switching function use (). From the point of view of a script, use PerlModule differs from use () that, that in a script does not import names of the module. The module, zagruzhenyj PerlModule, can be used also as obrabotchik any phase of processing of search, see below.


Perl*Handler Some:: Module


- Apache processes search in some phases - (Post-Read-Request, URI Translation, Header Parsing, Access Control, Authentication, Authorization, MIME type checking, FixUp, Response (!), Logging, Cleanup). Perl*Handler directive the module - obrabotchik for any from these phases. Most often PerlHandler directive establishing{installing} obrabotchik for phase Response is used. The others Perl*Handler directives (PerlPostReadRequestHandler, PerlTransHandler, PerlHeaderParserHandler, PerlAccessHandler, PerlAuthenHandler, …) are used less often.


In ours httpd.conf we have specified Apache:: Registry.pm as obrabotchik phases Response. When we require script.pl at the server, Apache:: Registry.pm takes otkompilirovanuju the version of a script from the cache and starts. Apache:: Registry.pm traces changes script.pl on a disk and if necessary perekompiliruet it{him}. However changes in the modules included script.pl are not traced are for a long time. So if you have changed any of the modules, restart the server.


You, certainly, are not obliged to use Apache:: Registry.pm as do{make} the majority of developers. Write for the sake of interest the obrabotchik phases Response:



package MyOwnResponseGenerator;

use strict;

use Apache:: Constants qw (:common);


sub handler {

print « Content-type: text/htmlnn »;

print « Hi people! enjoy this response! »;

return OK; * We must return a status to mod_perl

}

1;


MyOwnResponseGenerator.pm We shall put there where mod_perl can find it{him} (perl-e ' print join "n" e;, @INC '). We shall edit httpd.conf:



PerlModule MyOwnResponseGenerator

<Location/somelocation>

SetHandler perl-script PerlHandler MyOwnResponseGenerator

PerlSendHeader On

</Location>


Let's restart Apache, we shall type{collect} http: // my-project.ru/somelocation. Works!

In detail about konfigurirovanii mod_perl:

http://perl.apache.org/docs/1.0/guide/config.html