MediaWiki  REL1_24
MultiHttpClient Class Reference

Class to handle concurrent HTTP requests. More...

Collaboration diagram for MultiHttpClient:

List of all members.

Public Member Functions

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

Protected Member Functions

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

Protected Attributes

string null $caBundlePath
 SSL certificates path *.
integer $connTimeout = 10
 *
integer $maxConnsPerHost = 50
 *
resource $multiHandle = null
 *
integer $reqTimeout = 300
 *
bool $usePipelining = false
 *

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 Request maps can use integer index 0 instead of 'method' and 1 instead of 'url'.
Author:
Aaron Schulz
Since:
1.23

Definition at line 42 of file MultiHttpClient.php.


Constructor & Destructor Documentation

Parameters:
array$options
  • connTimeout : default connection timeout
  • reqTimeout : default request timeout
  • usePipelining : whether to use HTTP pipelining if possible (for all hosts)
  • maxConnsPerHost : maximum number of concurrent connections (per host)

Definition at line 57 of file MultiHttpClient.php.

Definition at line 378 of file MultiHttpClient.php.


Member Function Documentation

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

Definition at line 242 of file MultiHttpClient.php.

Returns:
resource

Definition at line 366 of file MultiHttpClient.php.

MultiHttpClient::run ( array req,
array opts = array() 
) [final]

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)
  • err : 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
  • reqTimeout : post-connection timeout per request
    Returns:
    array Response array for request

Definition at line 91 of file MultiHttpClient.php.

MultiHttpClient::runMulti ( array reqs,
array opts = array() 
)

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)
  • err : 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
  • reqTimeout : post-connection timeout per request
  • 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

Definition at line 121 of file MultiHttpClient.php.


Member Data Documentation

string null MultiHttpClient::$caBundlePath [protected]

SSL certificates path *.

Definition at line 44 of file MultiHttpClient.php.

integer MultiHttpClient::$connTimeout = 10 [protected]

*

Definition at line 45 of file MultiHttpClient.php.

integer MultiHttpClient::$maxConnsPerHost = 50 [protected]

*

Definition at line 48 of file MultiHttpClient.php.

resource MultiHttpClient::$multiHandle = null [protected]

*

Definition at line 43 of file MultiHttpClient.php.

integer MultiHttpClient::$reqTimeout = 300 [protected]

*

Definition at line 46 of file MultiHttpClient.php.

bool MultiHttpClient::$usePipelining = false [protected]

*

Definition at line 47 of file MultiHttpClient.php.


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