MediaWiki  1.28.0
MultiHttpClient Class Reference

Class to handle concurrent HTTP requests. More...

Collaboration diagram for MultiHttpClient:

Public Member Functions

 __construct (array $options)
 
 __destruct ()
 
 run (array $req, array $opts=[])
 Execute an HTTP(S) request. More...
 
 runMulti (array $reqs, array $opts=[])
 Execute a set of HTTP(S) requests concurrently. More...
 

Protected Member Functions

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

Protected Attributes

string null $caBundlePath
 SSL certificates path. More...
 
integer $connTimeout = 10
 
integer $maxConnsPerHost = 50
 
resource $multiHandle = null
 
string null $proxy
 proxy More...
 
integer $reqTimeout = 300
 
bool $usePipelining = false
 
string $userAgent = 'wikimedia/multi-http-client v1.0'
 

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'.
Author
Aaron Schulz
Since
1.23

Definition at line 45 of file MultiHttpClient.php.

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

Definition at line 73 of file MultiHttpClient.php.

References as.

MultiHttpClient::__destruct ( )

Definition at line 423 of file MultiHttpClient.php.

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

Definition at line 273 of file MultiHttpClient.php.

References $header, $matches, $name, $query, $userAgent, $value, as, list, and use.

Referenced by runMulti().

MultiHttpClient::getCurlMulti ( )
protected
Returns
resource

Definition at line 413 of file MultiHttpClient.php.

References $multiHandle.

Referenced by runMulti().

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

Definition at line 109 of file MultiHttpClient.php.

References runMulti().

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

Definition at line 139 of file MultiHttpClient.php.

References $batch, $name, $req, $value, as, getCurlHandle(), and getCurlMulti().

Referenced by run().

Member Data Documentation

string null MultiHttpClient::$caBundlePath
protected

SSL certificates path.

Definition at line 49 of file MultiHttpClient.php.

integer MultiHttpClient::$connTimeout = 10
protected

Definition at line 51 of file MultiHttpClient.php.

integer MultiHttpClient::$maxConnsPerHost = 50
protected

Definition at line 57 of file MultiHttpClient.php.

resource MultiHttpClient::$multiHandle = null
protected

Definition at line 47 of file MultiHttpClient.php.

Referenced by getCurlMulti().

string null MultiHttpClient::$proxy
protected

proxy

Definition at line 59 of file MultiHttpClient.php.

integer MultiHttpClient::$reqTimeout = 300
protected

Definition at line 53 of file MultiHttpClient.php.

bool MultiHttpClient::$usePipelining = false
protected

Definition at line 55 of file MultiHttpClient.php.

string MultiHttpClient::$userAgent = 'wikimedia/multi-http-client v1.0'
protected

Definition at line 61 of file MultiHttpClient.php.

Referenced by getCurlHandle().


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