# Net::Server::Fork - phpMan

## NAME
    [Net::Server::Fork] - [Net::Server] personality

## SYNOPSIS
        use base qw([Net::Server::Fork]);

        sub process_request {
            #...code...
        }

        __PACKAGE__->run();

## DESCRIPTION
    Please read the pod on [Net::Server] first. This module is a personality,
    or extension, or sub class, of the [Net::Server] module.

    This personality binds to one or more ports and then waits for a client
    connection. When a connection is received, the server forks a child. The
    child handles the request and then closes.

    With the exception of parent/child signaling, this module will work
    (with basic functionality) on Win32 systems.

## ARGUMENTS
    check_for_dead
        Number of seconds to wait before looking for dead children. This
        only takes place if the maximum number of child processes
        (max_servers) has been reached. Default is 60 seconds.

    max_servers
        The maximum number of children to fork. The server will not accept
        connections until there are free children. Default is 256 children.

    max_dequeue
        The maximum number of dequeue processes to start. If a value of zero
        or undef is given, no dequeue processes will be started. The number
        of running dequeue processes will be checked by the check_for_dead
        variable.

    check_for_dequeue
        Seconds to wait before forking off a dequeue process. It is intended
        to use the dequeue process to take care of items such as mail
        queues. If a value of undef is given, no dequeue processes will be
        started.

## CONFIGURATION FILE
    See [Net::Server].

## PROCESS FLOW
    Process flow follows [Net::Server] until the post_accept phase. At this
    point a child is forked. The parent is immediately able to wait for
    another request. The child handles the request and then exits.

## HOOKS
    The Fork server has the following hooks in addition to the hooks
    provided by the [Net::Server] base class. See [Net::Server]

    "$self->pre_accept_hook()"
        This hook occurs just before the accept is called.

    "$self->post_accept_hook()"
        This hook occurs in the child after the accept and fork.

    "$self->run_dequeue()"
        This hook only gets called in conjunction with the check_for_dequeue
        setting.

## HOT DEPLOY
    Since version 2.000, the Fork server has accepted the TTIN and TTOU
    signals. When a TTIN is received, the max_servers is increased by 1. If
    a TTOU signal is received the max_servers is decreased by 1. This allows
    for adjusting the number of handling processes without having to restart
    the server.

## AUTHOR
    Paul Seamons <<paul@seamons.com>>

    Rob Brown <<bbb@cpan.org>>

## SEE ALSO
    Please see also [Net::Server::INET], [Net::Server::PreFork],
    [Net::Server::MultiType], [Net::Server::SIG] [Net::Server::Single]

