![]() |
Home / Documentation / 1.0 / API / | |||
| Apache::RegistryLoader - Compile Apache::Registry scripts at server startup | ||||
|
|
||
#in your Perl Startup script: 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 startup.pl 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");
}
}
handler() to report and handle all
the possible erroneous conditions).
Only the major authors are listed above. For contributors see the Changes file.
|
|