Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
AnyEvent::SCGI(3)     User Contributed Perl Documentation    AnyEvent::SCGI(3)

NAME
       AnyEvent::SCGI -	Event based SCGI server

SYNOPSIS
       A simple	Hello World SCGI server	running	on port	22222:

	   use AnyEvent::SCGI;
	   use HTTP::Headers;

	   my $s = scgi_server '127.0.0.1', 22222, sub {
	       my $handle = shift;
	       my $env = shift;
	       my $content_ref = shift;	# undef	if none
	       my $fatal_error = shift;
	       my $error_string	= shift;

	       my $headers = HTTP::Headers->new(
		   'Status' => '200 OK',
		   'Content-Type' => 'text/plain',
		   'Connection'	=> 'close',
	       );

	       $handle->push_write($headers->as_string . "\r\nHello World!\r\n");
	       $handle->push_shutdown;
	   }
	   AnyEvent->condvar->recv;

DESCRIPTION
       Sets up a SCGI server on	the specified port. Can	be used	with or
       without "Coro".	You are	responsible for	any daemonization and startup
       code.

       The usual "AnyEvent" callback caveats apply; make sure you don't	block
       or re-enter the event loop in a way that's not supported.  This module
       has been	tested for use with "Coro", but	if you don't want to use that,
       it's recommended	that you return	from the callback as quickly as
       possible.

   Using Coro
       If you're using Coro, here's the	supported calling pattern:

	   use Coro;
	   use Coro::AnyEvent;
	   use AnyEvent;
	   use AnyEvent::SCGI;

	   my $s = scgi_server $server_name, $port, sub	{
	       my $handle = shift;
	       my $env = shift;
	       my $content = shift;

	       # handle	errors if any

	       async {
		   my $stuff = expensive($content);
		   $handle->push_write(
		       $headers->as_string .
		       "\r\nHello World!\r\n$stuff"
		   );
		   $handle->push_shutdown;
	       };
	       # return	before running async block
	   };
	   AE::cv->recv;

FUNCTIONS
   scgi_server $host, $port, $handler_cb
       This function creates a TCP socket on the given host and	port by
       calling "tcp_server()" from "AnyEvent::Socket".

       Calls $handler_cb when a	valid SCGI request has been received.  The
       callback	will block other clients until it returns.

       $handler_cb-_($handle,\%env,\$content,$fatal,$error)

       The first parameter is the "AnyEvent::Handle" If	the request has	a
       payload,	a reference to it is passed in as the $content parameter.

       On error, "\%env" and "\$content" are undef and the usual $fatal	and
       $error parameters are passed in as subsequent arguments.	 On "EOF" from
       the client, fatal is "0"	and error is 'EOF'.

AUTHORS
       Jeremy Stashewsky <stash@cpan.org>

       Kevin Jones <kevinj@cpan.org>

BUGS
       Please report any bugs or feature requests to "bug-anyevent-scgi	at
       rt.cpan.org", or	through	the web	interface at
       <http://rt.cpan.org/NoAuth/ReportBug.html?Queue=AnyEvent-SCGI>.	I will
       be notified, and	then you'll automatically be notified of progress on
       your bug	as I make changes.

SUPPORT
       You can find documentation for this module with the perldoc command.

	   perldoc AnyEvent::SCGI

       You can also look for information at:

       o   RT: CPAN's request tracker

	   <http://rt.cpan.org/NoAuth/Bugs.html?Dist=AnyEvent-SCGI>

       o   AnnoCPAN: Annotated CPAN documentation

	   <http://annocpan.org/dist/AnyEvent-SCGI>

       o   CPAN	Ratings

	   <http://cpanratings.perl.org/d/AnyEvent-SCGI>

       o   Search CPAN

	   <http://search.cpan.org/dist/AnyEvent-SCGI>

ACKNOWLEDGEMENTS
COPYRIGHT & LICENSE
       Copyright 2009 Jeremy Stashewsky	Copyright 2009 Kevin Jones

       Copyright 2009 Socialtext Inc., all rights reserved.

       This program is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.

perl v5.32.0			  2009-09-17		     AnyEvent::SCGI(3)

NAME | SYNOPSIS | DESCRIPTION | FUNCTIONS | AUTHORS | BUGS | SUPPORT | ACKNOWLEDGEMENTS | COPYRIGHT & LICENSE

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=AnyEvent::SCGI&sektion=3&manpath=FreeBSD+12.2-RELEASE+and+Ports>

home | help