BlueSpice MediaWiki master
 All Classes Namespaces Files Functions Variables Groups Pages
MultiHttpClient Class Reference
Inheritance diagram for MultiHttpClient:
Collaboration diagram for MultiHttpClient:

Public Member Functions

 __construct (array $options)
 
 run (array $req, array $opts=[])
 
 runMulti (array $reqs, array $opts=[])
 
 setLogger (LoggerInterface $logger)
 

Protected Member Functions

 getCurlHandle (array &$req, array $opts=[])
 
 getCurlMulti ()
 

Protected Attributes

 $multiHandle = null
 
 $caBundlePath
 
 $connTimeout = 10
 
 $reqTimeout = 300
 
 $usePipelining = false
 
 $maxConnsPerHost = 50
 
 $proxy
 
 $userAgent = 'wikimedia/multi-http-client v1.0'
 
 $logger
 

Detailed Description

Class to handle concurrent HTTP requests

HTTP request maps are arrays that use the following format:

  • method : GET/HEAD/PUT/POST/DELETE
  • url : HTTP/HTTPS URL
  • query : <query parameter field/value associative array> (uses RFC 3986)
  • headers : <header name/value associative array>
  • body : source to get the HTTP request body from; this can simply be a string (always), a resource for PUT requests, and a field/value array for POST request; array bodies are encoded as multipart/form-data and strings use application/x-www-form-urlencoded (headers sent automatically)
  • stream : resource to stream the HTTP response body to
  • proxy : HTTP proxy to use
  • flags : map of boolean flags which supports:
    • relayResponseHeaders : write out header via header() Request maps can use integer index 0 instead of 'method' and 1 instead of 'url'.
Since
1.23

Constructor & Destructor Documentation

MultiHttpClient::__construct ( array  $options)
Parameters
array$options
  • connTimeout : default connection timeout (seconds)
  • reqTimeout : default request timeout (seconds)
  • proxy : HTTP proxy to use
  • usePipelining : whether to use HTTP pipelining if possible (for all hosts)
  • maxConnsPerHost : maximum number of concurrent connections (per host)
  • userAgent : The User-Agent header value to send
Exceptions
Exception

Member Function Documentation

MultiHttpClient::getCurlHandle ( array &  $req,
array  $opts = [] 
)
protected
Parameters
array&$reqHTTP request map
array$opts
  • connTimeout : default connection timeout
  • reqTimeout : default request timeout
Returns
resource
Exceptions
Exception
MultiHttpClient::getCurlMulti ( )
protected
Returns
resource
Exceptions
Exception
MultiHttpClient::run ( array  $req,
array  $opts = [] 
)

Execute an HTTP(S) request

This method returns a response map of:

  • code : HTTP response code or 0 if there was a serious cURL error
  • reason : HTTP response reason (empty if there was a serious cURL error)
  • headers : <header name/value associative array>
  • body : HTTP response body or resource (if "stream" was set)
  • error : Any cURL error string The map also stores integer-indexed copies of these values. This lets callers do:
    list( $rcode, $rdesc, $rhdrs, $rbody, $rerr ) = $http->run( $req );
    Parameters
    array$reqHTTP request array
    array$opts
  • connTimeout : connection timeout per request (seconds)
  • reqTimeout : post-connection timeout per request (seconds)
    Returns
    array Response array for request
MultiHttpClient::runMulti ( array  $reqs,
array  $opts = [] 
)

Execute a set of HTTP(S) requests concurrently

The maps are returned by this method with the 'response' field set to a map of:

  • code : HTTP response code or 0 if there was a serious cURL error
  • reason : HTTP response reason (empty if there was a serious cURL error)
  • headers : <header name/value associative array>
  • body : HTTP response body or resource (if "stream" was set)
  • error : Any cURL error string The map also stores integer-indexed copies of these values. This lets callers do:
    list( $rcode, $rdesc, $rhdrs, $rbody, $rerr ) = $req['response'];
    All headers in the 'headers' field are normalized to use lower case names. This is true for the request headers and the response headers. Integer-indexed method/URL entries will also be changed to use the corresponding string keys.
Parameters
array$reqsMap of HTTP request arrays
array$opts
  • connTimeout : connection timeout per request (seconds)
  • reqTimeout : post-connection timeout per request (seconds)
  • usePipelining : whether to use HTTP pipelining if possible
  • maxConnsPerHost : maximum number of concurrent connections (per host)
Returns
array $reqs With response array populated for each
Exceptions
Exception
MultiHttpClient::setLogger ( LoggerInterface  $logger)

Register a logger

Parameters
LoggerInterface$logger

Implements Psr\Log\LoggerAwareInterface.


The documentation for this class was generated from the following file: