FCGI::Async - Module to allow use of FastCGI asynchronously


NAME

FCGI::Async - Module to allow use of FastCGI asynchronously


SYNOPSIS

NOTE: The constructor API of this module has changed since version 0.13!

This module allows a program to respond to FastCGI requests using an asynchronous model. It is based on the IO::Async manpage and will fully interact with any program using this base.

 use FCGI::Async;
 use IO::Async::Loop;
 my $loop = IO::Async::Loop->new();
 my $fcgi = FCGI::Async->new(
    loop => $loop,
    service => 1234,
    on_request => sub {
       my ( $fcgi, $req ) = @_;
       # Handle the request here
           }
        );
 $loop->loop_forever;

Or

 my $fcgi = FCGI::Async->new(
    on_request => ...
 );
 my $loop = ...
 $loop->add( $fcgi );
 $fcgi->listen( service => 1234 );

$fcgi = FCGI::Async->new( %args )

This function returns a new instance of a FCGI::Async object.

The %args hash must contain the following:

on_request => CODE

Reference to a handler to call when a new FastCGI request is received. It will be invoked as

 $on_request->( $fcgi, $request )

where $request will be a new the FCGI::Async::Request manpage object.

If either a handle or service argument are passed to the constructor, then the newly-created object is added to the given IO::Async::Loop, then the listen method is invoked, passing the entire %args hash to it. For more detail, see the listen method below.

If of the above arguments are given, then a IO::Async::Loop must also be provided:

loop => IO::Async::Loop

A reference to the IO::Async::Loop which will contain the listening sockets.


METHODS

$fcgi->listen( %args )

Start listening for connections on a socket, creating it first if necessary.

This method may be called in either of the following ways. To listen on an existing socket filehandle:

handle => IO

An IO handle referring to a listen-mode socket.

Or, to create the listening socket or sockets:

service => STRING

Port number or service name to listen on.

host => STRING

Optional. If supplied, the hostname will be resolved into a set of addresses, and one listening socket will be created for each address. If not, then all available addresses will be used.

This method may also require on_listen_error or on_resolve_error callbacks for error handling - see the IO::Async::Listener manpage for more detail.


Using a socket on STDIN

When running a local FastCGI responder, the webserver will create a new INET socket connected to the script's STDIN file handle. To use the socket in this case, it should be passed as the 'socket'


SEE ALSO


AUTHOR

Paul Evans <leonerd@leonerd.org.uk>

 FCGI::Async - Module to allow use of FastCGI asynchronously