stas 2004/07/21 22:37:30
Modified: src/docs/2.0/user/config config.pod
src/docs/2.0/user/handlers intro.pod server.pod
src/docs/2.0/user/porting compat.pod
Log:
new sections:
# Startup Process
# PerlLoadModule
# PerlModule
# PerlRequire
Revision Changes Path
1.66 +378 -224 modperl-docs/src/docs/2.0/user/config/config.pod
Index: config.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/docs/2.0/user/config/config.pod,v
retrieving revision 1.65
retrieving revision 1.66
diff -u -u -r1.65 -r1.66
--- config.pod 15 Jul 2004 20:51:08 -0000 1.65
+++ config.pod 22 Jul 2004 05:37:30 -0000 1.66
@@ -71,15 +71,60 @@
C<PerlModule> directives are processed.
+=head1 Startup Process
+
+As explained in the L<Server Life
+Cycle|docs::2.0::user::handlers::server> chapter, normally Apache
+runs the server configuration phase, followed by
+C<L<PerlOpenLogsHandler|docs::2.0::user::handlers::server/C_PerlOpenLogsHandler_>>
+and
+C<L<PerlPostConfigHandler|docs::2.0::user::handlers::server/C_PerlPostConfigHandler_>>
+phases, then immediately restarts itself. Therefore everything running
+at the server startup is executed twice. During the restart, Perl is
+completely destroyed and started again.
+
+If Apache is started as C<'httpd -t'> (equivalent to C<'apachectl
+configtest'>) or as C<'httpd -S'>, it will run only the configuration
+phase and exit. mod_perl 2.0 postpones the startup of Perl until after
+the configuration phase is over, to allow the usage of the
+C<L<PerlSwitches|/C_PerlSwitches_>> directive, which can't be used
+after Perl is started. mod_perl starts Perl and runs any registered
+C<L<PerlRequire|/C_PerlRequire_>> and C<L<PerlModule|/C_PerlModule_>>
+entries as the very first thing during the
+C<L<PerlOpenLogsHandler|docs::2.0::user::handlers::server/C_PerlOpenLogsHandler_>>
+phase, which is not invoked during the C<'apachectl configtest'>
+execution.
+
+There are two cases when mod_perl 2.0 is forced to start early (during
+the configuration phase). First, is when
+C<L<PerlLoadModule|/C_PerlLoadModule_>> is used and second is when a
+C<L<E<lt>PerlE<gt> section|docs::2.0::api::Apache::PerlSections>> is
+encountered, both requiring a running Perl, and therefore triggering
+an early server startup.
+
+Therefore at the moment, if you want to trigger an early Perl startup,
+just add an empty C<L<E<lt>PerlE<gt>
+section|docs::2.0::api::Apache::PerlSections>> in F<httpd.conf>:
+
+ <Perl>
+ # trigger an early Perl startup
+ </Perl>
+
+right after loading the mod_perl module, if you are using DSO, or just
+before your mod_perl configuration section, if you're using a static
+mod_perl build.
+
+
=head1 Startup File
-Next usually a startup file with Perl code is loaded:
+A startup file with Perl code to be executed at the server startup can
+be loaded using C<L<PerlRequire|/C_PerlRequire_>>. For example:
- PerlRequire "/home/httpd/httpd-2.0/perl/startup.pl"
+ PerlRequire /home/httpd/perl/lib/startup.pl
It's used to adjust Perl modules search paths in C<@INC>, pre-load
commonly used modules, pre-compile constants, etc. Here is a typical
@@ -118,9 +163,9 @@
1;
-In this file the C<Apache2> modules is loaded, so the 2.0 modules will
-be found. Afterwards C<@INC> in adjusted to include non-standard
-directories with Perl modules:
+In this file the C<Apache2> modules is loaded, so L<the 2.0 modules
+will be found|/Accessing_the_mod_perl_2_0_Modules>. Afterwards C<@INC>
+in adjusted to include non-standard directories with Perl modules:
use lib qw(/home/httpd/perl);
@@ -140,34 +185,8 @@
=head1 Server Configuration Directives
-=head2 C<PerlRequire>
-
- META: to be written
-
-=head2 C<PerlModule>
-
- META: to be written
-
-=head2 C<PerlLoadModule>
-
- META: to be written
- discused somewhere in docs::2.0::user::config::custom
-
-=head2 C<PerlSetVar>
-
- META: to be written
-
-=head2 C<PerlAddVar>
-
- META: to be written
-
-=head2 C<PerlSetEnv>
-
- META: to be written
-=head2 C<PerlPassEnv>
- META: to be written
=head2 C<E<lt>PerlE<gt>> Sections
@@ -182,225 +201,55 @@
-=head2 C<PerlSwitches>
-
-Now you can pass any Perl's command line switches in I<httpd.conf>
-using the C<PerlSwitches> directive. For example to enable warnings
-and Taint checking add:
-
- PerlSwitches -wT
-
-As an alternative to using C<use lib> in I<startup.pl> to adjust
-C<@INC>, now you can use the command line switch C<-I> to do that:
-
- PerlSwitches -I/home/stas/modperl
-
-You could also use C<-Mlib=/home/stas/modperl> which is the exact
-equivalent as C<use lib>, but it's broken on certain platforms/version
-(e.g. Darwin/5.6.0). C<use lib> is removing duplicated entries,
-whereas C<-I> does not.
-
-
-=head2 C<SetHandler>
-
-mod_perl 2.0 provides two types of C<SetHandler> handlers: C<modperl>
-and C<perl-script>. The C<SetHandler> directive is only relevant for
-response phase handlers. It doesn't affect other phases.
-
-=head3 C<modperl>
-
-Configured as:
-
- SetHandler modperl
-
-The bare mod_perl handler type, which just calls the C<Perl*Handler>'s
-callback function. If you don't need the features provided by the
-I<perl-script> handler, with the C<modperl> handler, you can gain even
-more performance. (This handler isn't available in mod_perl 1.0.)
-
-Unless the C<Perl*Handler> callback, running under the C<modperl>
-handler, is configured with:
-
- PerlOptions +SetupEnv
-
-or calls:
-
- $r->subprocess_env;
-
-in a void context with no arguments (which has the same effect
-as C<PerlOptions +SetupEnv> for the handler that called it), only
-the following environment variables are accessible via C<%ENV>:
-
-=over
-
-=item *
-
-C<MOD_PERL> (always)
-
-=item *
-
-C<PATH> and C<TZ> (if you had them defined in the shell or
-I<httpd.conf>)
-=back
-Therefore if you don't want to add the overhead of populating C<%ENV>,
-when you simply want to pass some configuration variables from
-I<httpd.conf>, consider using C<PerlSetVar> and C<PerlAddVar> instead
-of C<PerlSetEnv> and C<PerlPassEnv>. In your code you can retrieve the
-values using the C<dir_config()> method. For example if you set in
-I<httpd.conf>:
-
- <Location /print_env2>
- SetHandler modperl
- PerlResponseHandler Apache::VarTest
- PerlSetVar VarTest VarTestValue
- </Location>
-
-this value can be retrieved inside C<Apache::VarTest::handler()> with:
-
- $r->dir_config('VarTest');
-
-Alternatively use the Apache core directives C<SetEnv> and C<PassEnv>,
-which always populate C<r-E<gt>subprocess_env>, but this doesn't happen
-until the Apache I<fixups> phase, which could be too late for your needs.
-
-=head3 C<perl-script>
-
-Configured as:
-
- SetHandler perl-script
-
-Most mod_perl handlers use the I<perl-script> handler. Among other
-things it does:
-
-=over
+=head2 C<PerlAddVar>
-=item *
+ META: to be written
-C<PerlOptions +GlobalRequest> is in effect only during the
-PerlResponseHandler phase unless:
- PerlOptions -GlobalRequest
-is specified.
-=item *
-C<PerlOptions +SetupEnv> is in effect unless:
- PerlOptions -SetupEnv
+=head2 C<PerlLoadModule>
-is specified.
+The C<PerlLoadModule> directive is similar to
+C<L<PerlModule|/C_PerlModule_>>, in a sense that it loads a
+module. The difference is that it's used to implement L<new Apache
+directives|docs::2.0::user::config::custom>. Since those
+directives are needed during the configuration phase, this directive
+triggers L<an early Perl startup|/Startup_Process>, as a side effect.
-=item *
-C<STDIN> and C<STDOUT> get tied to the request object C<$r>, which
-makes possible to read from C<STDIN> and print directly to C<STDOUT>
-via C<CORE::print()>, instead of implicit calls like
-C<$r-E<gt>puts()>.
-=item *
-Several special global Perl variables are saved before the handler is
-called and restored afterwards (similar to mod_perl 1.0). This
-includes: C<%ENV>, C<@INC>, C<$/>, C<STDOUT>'s C<$|> and C<END> blocks
-array (C<PL_endav>).
-=item *
-Entries added to C<%ENV> are passed on to the C<subprocess_env> table,
-and are thus accessible via C<r-E<gt>subprocess_env> during the later
-C<PerlLogHandler> and C<PerlCleanupHandler> phases.
-=back
+=head2 C<PerlModule>
-=head3 Examples
+ PerlModule Foo::Bar
-Let's demonstrate the differences between the C<modperl> and the
-C<perl-script> core handlers in the following example, which
-represents a simple mod_perl response handler which prints out the
-environment variables as seen by it:
+is equivalent to Perl's:
- file:MyApache/PrintEnv1.pm
- -----------------------
- package MyApache::PrintEnv1;
- use strict;
-
- use Apache::RequestRec (); # for $r->content_type
- use Apache::RequestIO (); # for print
- use Apache::Const -compile => ':common';
-
- sub handler {
- my $r = shift;
-
- $r->content_type('text/plain');
- for (sort keys %ENV){
- print "$_ => $ENV{$_}\n";
- }
-
- return Apache::OK;
- }
-
- 1;
+ require Foo::Bar;
-This is the required configuration:
+C<PerlModule> is used to load modules using their package names.
- PerlModule MyApache::PrintEnv1
- <Location /print_env1>
- SetHandler perl-script
- PerlResponseHandler MyApache::PrintEnv1
- </Location>
+You can pass one or more module names as arguments to C<PerlModule>:
-Now issue a request to I<http://localhost/print_env1> and you should
-see all the environment variables printed out.
+ PerlModule Apache::DBI CGI DBD::Mysql
-Here is the same response handler, adjusted to work with the
-C<modperl> core handler:
+Notice, that normally, the Perl startup is L<delayed|/Startup_Process>
+until after the configuration phase.
- file:MyApache/PrintEnv2.pm
- ------------------------
- package MyApache::PrintEnv2;
- use strict;
-
- use Apache::RequestRec (); # for $r->content_type
- use Apache::RequestIO (); # for $r->print
-
- use Apache::Const -compile => ':common';
-
- sub handler {
- my $r = shift;
-
- $r->content_type('text/plain');
- $r->subprocess_env;
- for (sort keys %ENV){
- $r->print("$_ => $ENV{$_}\n");
- }
-
- return Apache::OK;
- }
-
- 1;
+See also: C<L<PerlRequire|/C_PerlRequire_>>.
-The configuration now will look as:
- PerlModule MyApache::PrintEnv2
- <Location /print_env2>
- SetHandler modperl
- PerlResponseHandler MyApache::PrintEnv2
- </Location>
-C<MyApache::PrintEnv2> cannot use C<print()> and therefore uses
-C<$r-E<gt>print()> to generate a response. Under the C<modperl> core
-handler C<%ENV> is not populated by default, therefore
-C<subprocess_env()> is called in a void context. Alternatively we
-could configure this section to do:
- PerlOptions +SetupEnv
-If you issue a request to I<http://localhost/print_env2>, you should
-see all the environment variables printed out as with
-I<http://localhost/print_env1>.
@@ -736,6 +585,307 @@
+=head2 C<PerlPassEnv>
+
+ META: to be written
+
+
+
+
+
+
+=head2 C<PerlRequire>
+
+ PerlRequire Foo/Bar.pm
+
+is equivalent to Perl's:
+
+ require "Foo/Bar.pm";
+
+C<PerlRequire> is used to load files with Perl code.
+
+Most commonly C<PerlRequire> is used to load
+F<L<startup.pl|/Startup_File>>, containing Perl code to be run at the
+server startup. For example:
+
+ PerlRequire /home/httpd/perl/lib/startup.pl
+
+A C<PerlRequire> filename argument can be absolute or relative to
+C<ServerRoot> or a filepath in Perl's C<@INC>.
+
+As with any file with Perl code that gets C<use()>'d or
+C<require()>'d, it must return a I<true> value. To ensure that this
+happens don't forget to add C<1;> at the end of
+F<L<startup.pl|/Startup_File>>.
+
+You can pass one or more filenames as arguments to C<PerlRequire>:
+
+ PerlRequire path1/startup.pl path2/startup.pl
+
+Notice that normally, the Perl startup is L<delayed|/Startup_Process>
+until after the configuration phase.
+
+See also: C<L<PerlModule|/C_PerlModule_>>.
+
+
+
+
+
+
+=head2 C<PerlSetEnv>
+
+ META: to be written
+
+
+
+
+
+
+
+=head2 C<PerlSetVar>
+
+ META: to be written
+
+
+
+
+
+=head2 C<PerlSwitches>
+
+Now you can pass any Perl's command line switches in I<httpd.conf>
+using the C<PerlSwitches> directive. For example to enable warnings
+and Taint checking add:
+
+ PerlSwitches -wT
+
+As an alternative to using C<use lib> in I<startup.pl> to adjust
+C<@INC>, now you can use the command line switch C<-I> to do that:
+
+ PerlSwitches -I/home/stas/modperl
+
+You could also use C<-Mlib=/home/stas/modperl> which is the exact
+equivalent as C<use lib>, but it's broken on certain platforms/version
+(e.g. Darwin/5.6.0). C<use lib> is removing duplicated entries,
+whereas C<-I> does not.
+
+
+
+
+
+
+
+=head2 C<SetHandler>
+
+mod_perl 2.0 provides two types of C<SetHandler> handlers: C<modperl>
+and C<perl-script>. The C<SetHandler> directive is only relevant for
+response phase handlers. It doesn't affect other phases.
+
+=head3 C<modperl>
+
+Configured as:
+
+ SetHandler modperl
+
+The bare mod_perl handler type, which just calls the C<Perl*Handler>'s
+callback function. If you don't need the features provided by the
+I<perl-script> handler, with the C<modperl> handler, you can gain even
+more performance. (This handler isn't available in mod_perl 1.0.)
+
+Unless the C<Perl*Handler> callback, running under the C<modperl>
+handler, is configured with:
+
+ PerlOptions +SetupEnv
+
+or calls:
+
+ $r->subprocess_env;
+
+in a void context with no arguments (which has the same effect
+as C<PerlOptions +SetupEnv> for the handler that called it), only
+the following environment variables are accessible via C<%ENV>:
+
+=over
+
+=item *
+
+C<MOD_PERL> (always)
+
+=item *
+
+C<PATH> and C<TZ> (if you had them defined in the shell or
+I<httpd.conf>)
+
+=back
+
+Therefore if you don't want to add the overhead of populating C<%ENV>,
+when you simply want to pass some configuration variables from
+I<httpd.conf>, consider using C<PerlSetVar> and C<PerlAddVar> instead
+of C<PerlSetEnv> and C<PerlPassEnv>. In your code you can retrieve the
+values using the C<dir_config()> method. For example if you set in
+I<httpd.conf>:
+
+ <Location /print_env2>
+ SetHandler modperl
+ PerlResponseHandler Apache::VarTest
+ PerlSetVar VarTest VarTestValue
+ </Location>
+
+this value can be retrieved inside C<Apache::VarTest::handler()> with:
+
+ $r->dir_config('VarTest');
+
+Alternatively use the Apache core directives C<SetEnv> and C<PassEnv>,
+which always populate C<r-E<gt>subprocess_env>, but this doesn't happen
+until the Apache I<fixups> phase, which could be too late for your needs.
+
+=head3 C<perl-script>
+
+Configured as:
+
+ SetHandler perl-script
+
+Most mod_perl handlers use the I<perl-script> handler. Among other
+things it does:
+
+=over
+
+=item *
+
+C<PerlOptions +GlobalRequest> is in effect only during the
+PerlResponseHandler phase unless:
+
+ PerlOptions -GlobalRequest
+
+is specified.
+
+=item *
+
+C<PerlOptions +SetupEnv> is in effect unless:
+
+ PerlOptions -SetupEnv
+
+is specified.
+
+=item *
+
+C<STDIN> and C<STDOUT> get tied to the request object C<$r>, which
+makes possible to read from C<STDIN> and print directly to C<STDOUT>
+via C<CORE::print()>, instead of implicit calls like
+C<$r-E<gt>puts()>.
+
+=item *
+
+Several special global Perl variables are saved before the handler is
+called and restored afterwards (similar to mod_perl 1.0). This
+includes: C<%ENV>, C<@INC>, C<$/>, C<STDOUT>'s C<$|> and C<END> blocks
+array (C<PL_endav>).
+
+=item *
+
+Entries added to C<%ENV> are passed on to the C<subprocess_env> table,
+and are thus accessible via C<r-E<gt>subprocess_env> during the later
+C<PerlLogHandler> and C<PerlCleanupHandler> phases.
+
+=back
+
+=head3 Examples
+
+Let's demonstrate the differences between the C<modperl> and the
+C<perl-script> core handlers in the following example, which
+represents a simple mod_perl response handler which prints out the
+environment variables as seen by it:
+
+ file:MyApache/PrintEnv1.pm
+ -----------------------
+ package MyApache::PrintEnv1;
+ use strict;
+
+ use Apache::RequestRec (); # for $r->content_type
+ use Apache::RequestIO (); # for print
+ use Apache::Const -compile => ':common';
+
+ sub handler {
+ my $r = shift;
+
+ $r->content_type('text/plain');
+ for (sort keys %ENV){
+ print "$_ => $ENV{$_}\n";
+ }
+
+ return Apache::OK;
+ }
+
+ 1;
+
+This is the required configuration:
+
+ PerlModule MyApache::PrintEnv1
+ <Location /print_env1>
+ SetHandler perl-script
+ PerlResponseHandler MyApache::PrintEnv1
+ </Location>
+
+Now issue a request to I<http://localhost/print_env1> and you should
+see all the environment variables printed out.
+
+Here is the same response handler, adjusted to work with the
+C<modperl> core handler:
+
+ file:MyApache/PrintEnv2.pm
+ ------------------------
+ package MyApache::PrintEnv2;
+ use strict;
+
+ use Apache::RequestRec (); # for $r->content_type
+ use Apache::RequestIO (); # for $r->print
+
+ use Apache::Const -compile => ':common';
+
+ sub handler {
+ my $r = shift;
+
+ $r->content_type('text/plain');
+ $r->subprocess_env;
+ for (sort keys %ENV){
+ $r->print("$_ => $ENV{$_}\n");
+ }
+
+ return Apache::OK;
+ }
+
+ 1;
+
+The configuration now will look as:
+
+ PerlModule MyApache::PrintEnv2
+ <Location /print_env2>
+ SetHandler modperl
+ PerlResponseHandler MyApache::PrintEnv2
+ </Location>
+
+C<MyApache::PrintEnv2> cannot use C<print()> and therefore uses
+C<$r-E<gt>print()> to generate a response. Under the C<modperl> core
+handler C<%ENV> is not populated by default, therefore
+C<subprocess_env()> is called in a void context. Alternatively we
+could configure this section to do:
+
+ PerlOptions +SetupEnv
+
+If you issue a request to I<http://localhost/print_env2>, you should
+see all the environment variables printed out as with
+I<http://localhost/print_env1>.
+
+
+
+
+
+
+
+
+
+
+
+
=head1 Server Life Cycle Handlers Directives
@@ -745,19 +895,23 @@
=head2 C<PerlOpenLogsHandler>
-See
C<L<PerlOpenLogsHandler|docs::2.0::user::handlers::server/PerlOpenLogsHandler>>.
+See
+C<L<PerlOpenLogsHandler|docs::2.0::user::handlers::server/C_PerlOpenLogsHandler_>>.
=head2 C<PerlPostConfigHandler>
-See
C<L<PerlPostConfigHandler|docs::2.0::user::handlers::server/PerlPostConfigHandler>>.
+See
+C<L<PerlPostConfigHandler|docs::2.0::user::handlers::server/C_PerlPostConfigHandler_>>.
=head2 C<PerlChildInitHandler>
-See
C<L<PerlChildInitHandler|docs::2.0::user::handlers::server/PerlChildInitHandler>>.
+See
+C<L<PerlChildInitHandler|docs::2.0::user::handlers::server/C_PerlChildInitHandler_>>.
=head2 C<PerlChildExitHandler>
-See
C<L<PerlChildExitHandler|docs::2.0::user::handlers::server/PerlChildExitHandler>>.
+See
+C<L<PerlChildExitHandler|docs::2.0::user::handlers::server/C_PerlChildExitHandler_>>.
1.20 +5 -6 modperl-docs/src/docs/2.0/user/handlers/intro.pod
Index: intro.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/docs/2.0/user/handlers/intro.pod,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -u -r1.19 -r1.20
--- intro.pod 12 Jan 2004 04:30:46 -0000 1.19
+++ intro.pod 22 Jul 2004 05:37:30 -0000 1.20
@@ -132,13 +132,13 @@
=over
-=item *
C<L<PerlOpenLogsHandler|docs::2.0::user::handlers::server/PerlOpenLogsHandler>>
+=item *
C<L<PerlOpenLogsHandler|docs::2.0::user::handlers::server/C_PerlOpenLogsHandler_>>
-=item *
C<L<PerlPostConfigHandler|docs::2.0::user::handlers::server/PerlPostConfigHandler>>
+=item *
C<L<PerlPostConfigHandler|docs::2.0::user::handlers::server/C_PerlPostConfigHandler_>>
-=item *
C<L<PerlChildInitHandler|docs::2.0::user::handlers::server/PerlChildInitHandler>>
+=item *
C<L<PerlChildInitHandler|docs::2.0::user::handlers::server/C_PerlChildInitHandler_>>
-=item *
C<L<PerlChildExitHandler|docs::2.0::user::handlers::server/PerlChildExitHandler>>
+=item *
C<L<PerlChildExitHandler|docs::2.0::user::handlers::server/C_PerlChildExitHandler_>>
=back
@@ -253,7 +253,7 @@
PerlOutputFilterHandler VOID
Note:
-C<L<PerlChildExitHandler|docs::2.0::user::handlers::http/PerlChildExitHandler>>
+C<L<PerlChildExitHandler|docs::2.0::user::handlers::http/C_PerlChildExitHandler_>>
and
C<L<PerlCleanupHandler|docs::2.0::user::handlers::http/PerlCleanupHandler>>
are not real Apache hooks, but to mod_perl users they behave as all
@@ -281,7 +281,6 @@
Handlers of the type C<RUN_ALL> will be executed in the order they
have been registered until the first handler that returns something
other than C<Apache::OK> or C<Apache::DECLINED>.
-
For C API declarations see I<include/ap_config.h>, which includes
other types which aren't exposed by mod_perl handlers.
1.19 +7 -7 modperl-docs/src/docs/2.0/user/handlers/server.pod
Index: server.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/docs/2.0/user/handlers/server.pod,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -u -r1.18 -r1.19
--- server.pod 16 Jul 2004 01:11:03 -0000 1.18
+++ server.pod 22 Jul 2004 05:37:30 -0000 1.19
@@ -206,7 +206,7 @@
-=head2 PerlOpenLogsHandler
+=head2 C<PerlOpenLogsHandler>
The I<open_logs> phase happens just before the I<post_config> phase.
@@ -271,7 +271,7 @@
C<$s> is the base server object.
The pool arguments in this phase and
-C<L<PerlPostConfigHandler|/PerlPostConfigHandler>> are:
+C<L<PerlPostConfigHandler|/C_PerlPostConfigHandler_>> are:
=over
@@ -331,9 +331,9 @@
}
As you can see, its arguments are identical to the
-L<I<open_logs|/PerlOpenLogsHandler>> phase's handler. In this example
-handler we don't do much, but logging that the configuration was
-completed and returning right away.
+L<I<open_logs|/C_PerlOpenLogsHandler_>> phase's handler. In this
+example handler we don't do much, but logging that the configuration
+was completed and returning right away.
As you've seen in the example this handler is configured by adding to
I<httpd.conf>:
@@ -341,8 +341,8 @@
PerlPostConfigHandler MyApache::StartupLog::post_config
Everything that applies to
-C<L<PerlOpenLogsHandler|/PerlOpenLogsHandler>> identically applies to
-this handler.
+C<L<PerlOpenLogsHandler|/C_PerlOpenLogsHandler_>> identically applies
+to this handler.
The
C<L<add_version_component()|docs::2.0::api::Apache::ServerUtil/C_add_version_component_>>
1.59 +4 -29 modperl-docs/src/docs/2.0/user/porting/compat.pod
Index: compat.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/docs/2.0/user/porting/compat.pod,v
retrieving revision 1.58
retrieving revision 1.59
diff -u -u -r1.58 -r1.59
--- compat.pod 16 Jul 2004 01:11:03 -0000 1.58
+++ compat.pod 22 Jul 2004 05:37:30 -0000 1.59
@@ -127,35 +127,10 @@
=head1 Server Startup
-mod_perl 1.0 was always running its startup code immediately at the
-server startup. On a big setup it was causing a slow startup, since
-Apache always starts and immediately restarts itself, running the
-startup code twice. Therefore in mod_perl 2.0, by default perl won't
-be started until after the configuration phase. So, if for example you
-run:
-
- % apachectl configtest
-
-none of your perl code will be executed.
-
-There are two cases when mod_perl 2.0 is forced to start early. First,
-is when
-C<L<PerlLoadModule|docs::2.0::user::config::config/C_PerlLoadModule_>>
-is used and the second is
-C<L<E<lt>PerlE<gt>|docs::2.0::api::Apache::PerlSections>> sections,
-both requiring a running perl, and triggering an early server startup.
-
-Therefore at the moment, if you want to trigger an early startup, like
-mod_perl 1.0 does, just add an empty
-C<L<E<lt>PerlE<gt>|docs::2.0::api::Apache::PerlSections>> section:
-
- <Perl>
- # trigger an early startup
- </Perl>
-
-Right after loading the mod_perl module in F<httpd.conf> if you are
-using DSO, or just before your mod_perl configuration if you using a
-static build.
+mod_perl 1.0 was always running its startup code as soon as it was
+encountered. In mod_perl 2.0, it is not always the case. Refer to the
+L<Startup Process|docs::2.0::user::config::config/Startup_Process>
+section.
=head1 Code Porting
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]