NAME
Proc::Daemon::Prefork - Create preforking, autoreloading daemon
VERSION
This document describes version 0.711 of Proc::Daemon::Prefork (from
Perl distribution Proc-Daemon-Prefork), released on 2019-07-08.
METHODS
new(%args)
Arguments:
* require_root => BOOL (default 0)
If true, bails out if not running as root.
* error_log_path => STR (required if daemonize=1)
Or, alternatively, specify "error_log_handle" instead.
* error_log_handle => OBJ
An alternative to specifying "error_log_path", to allow logging to a
filehandle-like object, e.g. tied filehandle, instead of to a
regular file.
* access_log_path => STR (required if daemonize=1)
Or, alternatively, specify "access_log_handle" instead.
* access_log_handle => OBJ
An alternative to specifying "access_log_path", to allow logging to
a filehandle-like object, e.g. tied filehandle, instead of to a
regular file.
* pid_path => STR (required if daemonize=1)
* scoreboard_path => STR (default none)
If not set, no scoreboard file will be created/updated. Scoreboard
file is used to communicate between parent and child processes.
Autoadjustment of number of processes, for example, requires this
(see max_children for more details).
* daemonize => BOOL (default 1)
* prefork => INT (default 3, 0 means a nonforking/single-threaded
daemon)
This is like the StartServers setting in Apache webserver (the
prefork MPM), the number of children processes to prefork.
* max_children => INT (default 150)
This is like the MaxClients setting in Apache webserver. Initially
the number of children spawned will follow the 'prefork' setting. If
while serving requests, all children are busy, parent will
automatically increase the number of children gradually until
'max_children'. If afterwards these children are idle, they will be
gradually killed off until there are 'prefork' number of children
again.
Note that for this to function, scoreboard_path must be defined
since the parent needs to communicate with children.
* auto_reload_check_every => INT (default undef, meaning never)
In seconds.
* auto_reload_handler => CODEREF (required if auto_reload_check_every
is set)
* before_daemonize => CODEREF (default none)
Run code before daemonizing. If code returns false, will abort
daemonizing and exit with non-zero status (1).
* after_init => CODEREF (default none)
Run after the daemon initializes itself (daemonizes, writes PID
file, etc), before spawning children. You usually bind to sockets
here (if your daemon is a network server).
* on_client_disconnect => CODEREF
Do something after socket connection between client and child
process is closed. This requires scoreboard (see "scoreboard_path"
argument) to record all the children's PIDs, and also the "netstat"
command and Parse::Netstat module to check for connections.
This can be used, for example, to kill child process (cancel job) on
disconnect.
Will be called for each child server being disconnected. Code will
receive a hash containing: "pid", "proto", "local_host",
"local_port", "foreign_host", "foreign_port".
Note that monitoring connections is done every few seconds by the
parent process, so this code will not be run immediately after
closing of connection.
Currently only works for TCP connections and not Unix connections,
due to lack of information provided by "netstat" for Unix
connections.
* main_loop* => CODEREF
Run at the beginning of each child process. This is the main loop
for your daemon. You usually do this in your main loop routine:
for(my $i=1; $i<=$MAX_REQUESTS_PER_CHILD; $i++) {
# accept loop, or process job loop
}
* before_shutdown => CODEREF (optional)
Run before killing children and shutting down.
HOMEPAGE
Please visit the project's homepage at
<
https://metacpan.org/release/Proc-Daemon-Prefork>.
SOURCE
Source repository is at
<
https://github.com/perlancar/perl-SHARYANTO-Proc-Daemon-Prefork>.
BUGS
Please report any bugs or feature requests on the bugtracker website
<
https://rt.cpan.org/Public/Dist/Display.html?Name=Proc-Daemon-Prefork>
When submitting a bug or request, please include a test-file or a patch
to an existing test-file that illustrates the bug or desired feature.
AUTHOR
perlancar <
[email protected]>
COPYRIGHT AND LICENSE
This software is copyright (c) 2019, 2014 by
[email protected].
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.