Skip to content

zzzcpan/Nginx-HTTP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NAME
    Nginx::HTTP - asynchronous http client for nginx-perl

SYNOPSIS
        use Nginx;
        use Nginx::HTTP;
    
        ngx_http "1.2.3.4:80", "GET / HTTP/1.1"   . "\x0d\x0a" .
                               "Host: localhost"  . "\x0d\x0a" .
                               ""                 . "\x0d\x0a"   , sub {
        
            my ($headers, $buf_ref) = @_;
        
            unless ($headers) {
                ngx_log_error $!, "error";
                return;
            }
        
            ngx_log_notice 0, "got $headers->{'_status'}";
            ...
        };

DESCRIPTION
    Fast and simple asynchronous http client for nginx-perl. Supports
    keepalive.

EXPORT
        ngx_http
        ngx_http_client

FUNCTIONS
   "ngx_http "$ip:$port:key=value;key=value...", $request, sub { }"
    Establishes new connection with "$ip:$port" and sends raw HTTP request.
    $request should be either scalar or scalar reference. Additionally there
    are two options available: "timeout" and "ssl". E.g.:

        ngx_http "1.2.3.4:443:ssl=1;timeout=15", ...
        ngx_http "1.2.3.4:80:timeout=15", ...
        ngx_http "1.2.3.4:80", ...

    Calls back with parsed response header in $_[0] and scalar reference to
    the body in $_[1].

        $headers =  {  _status        => 503,
                       content-type   => ['text/html'],
                       content-length => [1234],
                       ...                              };
    
        $body = \"foobar";

    $body is cleared right after the callback, so you have to copy its
    content if you want to use it later.

    On error calls back without any arguments. Tries to reconnect on the
    next request.

    For now every connection is cached forever. But you can use
    "ngx_http_client" to create desired caching behaviour.

        ngx_http "1.2.3.4:80", "GET / HTTP/1.1"   . "\x0d\x0a" .
                               "Host: localhost"  . "\x0d\x0a" .
                               ""                 . "\x0d\x0a"   , sub {
        
            my ($headers, $body_ref) = @_;
        
            unless ($headers) {
                ngx_log_error $!, "error";
                return;
            }
        
            ngx_log_notice 0, "got $headers->{'_status'}";
            ...
        };

SEE ALSO
    Nginx, HTTP::Parser2::XS

AUTHOR
    Alexandr Gomoliako <[email protected]>

LICENSE
    Copyright 2012 Alexandr Gomoliako. All rights reserved.

    This module is free software. It may be used, redistributed and/or
    modified under the same terms as Perl itself.

About

asynchronous http client for nginx-perl

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages