|
Apache::RegistryLoader - Compile Apache::Registry scripts at server startup |
Apache::RegistryLoader - Compile Apache::Registry scripts at server startup
#in PerlScript
use Apache::RegistryLoader ();
my $r = Apache::RegistryLoader->new;
$r->handler($uri, $filename);
$r->handler($uri, $filename, $virtual_hostname);
This modules allows compilation of Apache::Registry scripts at
server startup. The script's handler routine is compiled by the
parent server, of which children get a copy. The
Apache::RegistryLoader handler method takes arguments of uri
and the filename. URI to filename translation normally doesn't
happen until HTTP request time, so we're forced to roll our own
translation.
If filename is omitted and a trans routine was not
defined, the loader will try using the uri relative to
ServerRoot. Example:
#in httpd.conf ServerRoot /opt/www/apache Alias /perl/ /opt/www/apache/perl
#in PerlScript use Apache::RegistryLoader ();
#/opt/www/apache/perl/test.pl
#is the script loaded from disk here:
Apache::RegistryLoader->new->handler("/perl/test.pl");
To make the loader smarter about the uri->filename translation, you may
provide the new method with a trans function to translate the
uri to filename.
The following example will pre-load all files ending with .pl in the
perl-scripts/ directory relative to ServerRoot.
The example code assumes the Location URI /perl is an Alias to
this directory.
{
use Cwd ();
use Apache::RegistryLoader ();
use DirHandle ();
use strict;
my $dir = Apache->server_root_relative("perl-scripts/");
my $rl = Apache::RegistryLoader->new(trans => sub {
my $uri = shift;
$uri =~ s:^/perl/:/perl-scripts/:;
return Apache->server_root_relative($uri);
});
my $dh = DirHandle->new($dir) or die $!;
for my $file ($dh->read) {
next unless $file =~ /\.pl$/;
$rl->handler("/perl/$file");
}
}
Doug MacEachern
Stas Bekman (Rewrote the handler() to report and handle all the possible
erroneous conditions)
Apache::Registry(3), Apache(3), mod_perl(3)
|
Apache::RegistryLoader - Compile Apache::Registry scripts at server startup |