You are viewing a plain text version of this content. The canonical link for it is here.
Posted to docs-cvs@perl.apache.org by st...@apache.org on 2004/06/09 19:06:55 UTC
cvs commit: modperl-docs/src/docs/2.0/user/handlers http.pod
stas 2004/06/09 10:06:55
Modified: src/docs/2.0/user/handlers http.pod
Log:
fill in the PerlMapToStorageHandler gap
Revision Changes Path
1.35 +67 -20 modperl-docs/src/docs/2.0/user/handlers/http.pod
Index: http.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/docs/2.0/user/handlers/http.pod,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -u -r1.34 -r1.35
--- http.pod 9 Jun 2004 16:17:42 -0000 1.34
+++ http.pod 9 Jun 2004 17:06:55 -0000 1.35
@@ -238,16 +238,14 @@
=head2 PerlTransHandler
-The I<translate> phase is used to perform the translation of a
-request's URI into an corresponding filename. If no custom handler is
-provided, the server's standard translation rules (e.g., C<Alias>
-directives, mod_rewrite, etc.) will continue to be used. A
-C<PerlTransHandler> handler can alter the default translation
-mechanism or completely override it.
-
-In addition to doing the translation, this stage can be used to modify
-the URI itself and the request method. This is also a good place to
-register new handlers for the following phases based on the URI.
+The I<translate> phase is used to perform the manipulation of a
+request's URI. If no custom handler is provided, the server's standard
+translation rules (e.g., C<Alias> directives, mod_rewrite, etc.) will
+be used. A C<PerlTransHandler> handler can alter the default
+translation mechanism or completely override it. This is also a good
+place to register new handlers for the following phases based on the
+URI. C<L<PerlMapToStorageHandler|/PerlMapToStorageHandler>> is to be
+used to override the URI to filename translation.
This phase is of type
C<L<RUN_FIRST|docs::2.0::user::handlers::intro/item_RUN_FIRST>>.
@@ -316,17 +314,11 @@
=head2 PerlMapToStorageHandler
The I<map_to_storage> phase is used to perform the translation of a
-
-
-
-
request's URI into an corresponding filename. If no custom handler is
-provided, the server's standard translation rules (e.g., C<Alias>
-directives, mod_rewrite, etc.) will continue to be used. A
-C<PerlTransHandler> handler can alter the default translation
-mechanism or completely override it.
-
-META: add something here
+provided, the server will try to walk the filesystem trying to find
+what file or directory corresponds to the request's URI. Since usually
+mod_perl handler don't have corresponding files on the filesystem, you
+will want to shortcut this phase and save quite a few CPU cycles.
This phase is of type
C<L<RUN_FIRST|docs::2.0::user::handlers::intro/item_RUN_FIRST>>.
@@ -335,6 +327,61 @@
C<L<SRV|docs::2.0::user::config::config/item_SRV>>, because at this
phase the request has not yet been associated with a particular
filename or directory.
+
+For example if you don't want Apache to try to attempt to translate
+URI into a filename, just add a handler:
+
+ PerlMapToStorageHandler MyApache::NoTranslation
+
+using the following code:
+
+ file:MyApache/NoTranslation.pm
+ ------------------------------
+ package MyApache::NoTranslation;
+
+ use strict;
+ use warnings FATAL => 'all';
+
+ use Apache::Const -compile => qw(OK);
+
+ sub handler {
+ my $r = shift;
+
+ # skip ap_directory_walk stat() calls
+ return Apache::OK;
+ }
+ 1;
+
+Apache also uses this phase to handle C<TRACE> requests. So if you
+shortcut it, C<TRACE> calls will be not handled. In case you need to
+handle such, you may rewrite it as:
+
+ file:MyApache/NoTranslation2.pm
+ -------------------------------
+ package MyApache::NoTranslation2;
+
+ use strict;
+ use warnings FATAL => 'all';
+
+ use Apache::RequestRec ();
+
+ use Apache::Const -compile => qw(DECLINED OK M_TRACE);
+
+ sub handler {
+ my $r = shift;
+
+ return Apache::DECLINED if $r->method_number == Apache::M_TRACE;
+
+ # skip ap_directory_walk stat() calls
+ return Apache::OK;
+ }
+ 1;
+
+Another way to prevent the core translation is to set
+C<$r-E<gt>filename()> to some value, which can also be done in the
+C<L<PerlTransHandler|/PerlTransHandler>>, if you are already using it.
+
+
---------------------------------------------------------------------
To unsubscribe, e-mail: docs-cvs-unsubscribe@perl.apache.org
For additional commands, e-mail: docs-cvs-help@perl.apache.org