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]

Reply via email to