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 IO::Async and will fully interact with any program using this base.

use FCGI::Async;
use IO::Async::Loop::IO_Poll;

my $loop = IO::Async::Loop::IO_Poll->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 );

CONSTRUCTOR

$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 FCGI::Async::Request 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 IO::Async::Listener 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>