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 2003/02/18 06:15:36 UTC
cvs commit: modperl-docs/src/docs/2.0/user/handlers connection_cycle.gif server.pod
stas 2003/02/17 21:15:36
Modified: src/docs/2.0/user/handlers connection_cycle.gif server.pod
Log:
add the child_exit phase example
Revision Changes Path
1.2 +183 -73 modperl-docs/src/docs/2.0/user/handlers/connection_cycle.gif
<<Binary file>>
1.5 +47 -17 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.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- server.pod 18 Feb 2003 04:29:41 -0000 1.4
+++ server.pod 18 Feb 2003 05:15:36 -0000 1.5
@@ -88,6 +88,12 @@
return Apache::OK;
}
+ sub child_exit {
+ my($child_pool, $s) = @_;
+ say("process $$ now exits");
+ return Apache::OK;
+ }
+
sub say {
my($caller) = (caller(1))[3] =~ /([^:]+)$/;
if (defined $log_fh) {
@@ -113,6 +119,7 @@
PerlOpenLogsHandler MyApache::StartupLog::open_logs
PerlPostConfigHandler MyApache::StartupLog::post_config
PerlChildInitHandler MyApache::StartupLog::child_init
+ PerlChildExitHandler MyApache::StartupLog::child_exit
When we perform a server startup followed by a shutdown, the
I<logs/startup_log> is created if it didn't exist already (it shares
@@ -133,6 +140,10 @@
[Thu Aug 22 15:57:11 2002] - child_init : process 21831 is born to serve
[Thu Aug 22 15:57:11 2002] - child_init : process 21832 is born to serve
[Thu Aug 22 15:57:11 2002] - child_init : process 21833 is born to serve
+ [Thu Aug 22 15:57:12 2002] - child_exit : process 21833 now exits
+ [Thu Aug 22 15:57:12 2002] - child_exit : process 21832 now exits
+ [Thu Aug 22 15:57:12 2002] - child_exit : process 21831 now exits
+ [Thu Aug 22 15:57:12 2002] - child_exit : process 21830 now exits
[Thu Aug 22 15:57:12 2002] - END : process 21825 is shutdown
First of all, we can clearly see that Apache always restart itself
@@ -144,8 +155,9 @@
C<StartServers=4>, therefore you can see four child processes were
started.
-Finally you can see that on server shutdown the END {} block has been
-executed by the parent server only.
+Finally you can see that on server shutdown, the I<child_exit> phase
+is run for each child process and the C<END {}> block is executed by
+the parent process only.
Apache also specifies the I<pre_config> phase, which is executed
before the configuration files are parsed, but this is of no use to
@@ -172,10 +184,11 @@
The handler's configuration scope is
C<L<SRV|docs::2.0::user::config::config/item_SRV>>.
-As we have seen in the C<MyApache::StartupLog::open_logs> handler, the
-I<open_logs> phase handlers accept four arguments: the configuration
-pool, the logging streams pool, the temporary pool and the server
-object:
+As we have seen in the
+C<L<MyApache::StartupLog::open_logs|/Startup_Phases_Demonstration_Module>>
+handler, the I<open_logs> phase handlers accept four arguments: the
+configuration pool, the logging streams pool, the temporary pool and
+the server object:
sub open_logs {
my($conf_pool, $log_pool, $temp_pool, $s) = @_;
@@ -211,9 +224,8 @@
This phase can be used for initializing things to be shared between
all child processes. You can do the same in the startup file, but in
the I<post_config> phase you have an access to a complete
-configuration tree.
-
-META: once mod_perl will have the API for that.
+configuration tree (via
+C<L<Apache::Directive|docs::2.0::api::Apache::Directive>>).
This phase is of type
C<L<RUN_ALL|docs::2.0::user::handlers::intro/item_RUN_ALL>>.
@@ -221,8 +233,8 @@
The handler's configuration scope is
C<L<SRV|docs::2.0::user::config::config/item_SRV>>.
-In our C<MyApache::StartupLog> example we used the I<post_config()>
-handler:
+In our C<L<MyApache::StartupLog|/Startup_Phases_Demonstration_Module>>
+example we used the I<post_config()> handler:
sub post_config {
my($conf_pool, $log_pool, $temp_pool, $s) = @_;
@@ -257,8 +269,8 @@
The handler's configuration scope is
C<L<SRV|docs::2.0::user::config::config/item_SRV>>.
-In our C<MyApache::StartupLog> example we used the I<child_init()>
-handler:
+In our C<L<MyApache::StartupLog|/Startup_Phases_Demonstration_Module>>
+example we used the I<child_init()> handler:
sub child_init {
my($child_pool, $s) = @_;
@@ -278,16 +290,34 @@
=head2 PerlChildExitHandler
-The child_exit stage is used to execute some code just before the
-child process (not threads!) is killed.
+Opposite to the I<child_init> phase, the I<child_exit> phase is
+executed before the child process exits. Notice that it happens only
+when the process exits, not the thread (assuming that you are using a
+threaded mpm).
This phase is of type
-C<L<RUN_ALL|docs::2.0::user::handlers::intro/item_RUN_ALL>>.
+C<L<RUN_ALL|docs::2.0::user::handlers::intro/item_RUN_ALL>>.
The handler's configuration scope is
C<L<SRV|docs::2.0::user::config::config/item_SRV>>.
-META: examples are needed (for now mod_perl 1.0 docs apply)
+In our C<L<MyApache::StartupLog|/Startup_Phases_Demonstration_Module>>
+example we used the I<child_exit()> handler:
+
+ sub child_exit {
+ my($child_pool, $s) = @_;
+ say("process $$ now exits");
+ return Apache::OK;
+ }
+
+The I<child_exit()> handler accepts two arguments: the child process
+pool and the server object. The example handler logs the pid of the
+child process it's run in and returns.
+
+As you've seen in the example this handler is configured by adding to
+I<httpd.conf>:
+
+ PerlOpenLogsHandler MyApache::StartupLog::child_exit
=head1 Maintainers
---------------------------------------------------------------------
To unsubscribe, e-mail: docs-cvs-unsubscribe@perl.apache.org
For additional commands, e-mail: docs-cvs-help@perl.apache.org