# phpman > man > Net::Server::Fork

## NAME
    [Net::Server::Fork](https://www.chedong.com/phpMan.php/perldoc/Net%3A%3AServer%3A%3AFork/markdown) - [Net::Server](https://www.chedong.com/phpMan.php/perldoc/Net%3A%3AServer/markdown) personality

## SYNOPSIS
        use base qw([Net::Server::Fork](https://www.chedong.com/phpMan.php/perldoc/Net%3A%3AServer%3A%3AFork/markdown));

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

        __PACKAGE__->run();

## DESCRIPTION
    Please read the pod on [Net::Server](https://www.chedong.com/phpMan.php/perldoc/Net%3A%3AServer/markdown) first. This module is a personality, or extension, or sub
    class, of the [Net::Server](https://www.chedong.com/phpMan.php/perldoc/Net%3A%3AServer/markdown) 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](https://www.chedong.com/phpMan.php/perldoc/Net%3A%3AServer/markdown).

## PROCESS FLOW
    Process flow follows [Net::Server](https://www.chedong.com/phpMan.php/perldoc/Net%3A%3AServer/markdown) 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](https://www.chedong.com/phpMan.php/perldoc/Net%3A%3AServer/markdown)
    base class. See [Net::Server](https://www.chedong.com/phpMan.php/perldoc/Net%3A%3AServer/markdown)

    "$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](https://www.chedong.com/phpMan.php/perldoc/Net%3A%3AServer%3A%3AINET/markdown), [Net::Server::PreFork](https://www.chedong.com/phpMan.php/perldoc/Net%3A%3AServer%3A%3APreFork/markdown), [Net::Server::MultiType](https://www.chedong.com/phpMan.php/perldoc/Net%3A%3AServer%3A%3AMultiType/markdown),
    [Net::Server::SIG](https://www.chedong.com/phpMan.php/perldoc/Net%3A%3AServer%3A%3ASIG/markdown) [Net::Server::Single](https://www.chedong.com/phpMan.php/perldoc/Net%3A%3AServer%3A%3ASingle/markdown)

