MediaWiki
master
|
Class to handle multiple HTTP requests. More...
Public Member Functions | |
__construct (array $options) | |
Since 1.35, callers should use HttpRequestFactory::createMultiClient() to get a client object with appropriately configured timeouts instead of constructing a MultiHttpClient directly. More... | |
__destruct () | |
run (array $req, array $opts=[]) | |
Execute an HTTP(S) request. More... | |
runMulti (array $reqs, array $opts=[]) | |
Execute a set of HTTP(S) requests. More... | |
setLogger (LoggerInterface $logger) | |
Register a logger. More... | |
Protected Member Functions | |
getCurlHandle (array &$req, array $opts) | |
getCurlMulti (array $opts) | |
isCurlEnabled () | |
Determines if the curl extension is available. More... | |
Protected Attributes | |
string null | $caBundlePath |
SSL certificates path. More... | |
resource | $cmh |
curl_multi_init() handle More... | |
float | $connTimeout = 10 |
LoggerInterface | $logger |
int | $maxConnsPerHost = 50 |
float | $maxConnTimeout = INF |
float | $maxReqTimeout = INF |
string null | $proxy |
proxy More... | |
float | $reqTimeout = 30 |
bool | $usePipelining = false |
string | $userAgent = 'wikimedia/multi-http-client v1.0' |
Private Member Functions | |
getSelectTimeout ( $opts) | |
Get a suitable select timeout for the given options. More... | |
normalizeRequests (array &$reqs) | |
Normalize request information. More... | |
runMultiCurl (array $reqs, array $opts) | |
Execute a set of HTTP(S) requests concurrently. More... | |
runMultiHttp (array $reqs, array $opts=[]) | |
Execute a set of HTTP(S) requests sequentially. More... | |
Private Attributes | |
const | TIMEOUT_ACCURACY_FACTOR = 0.1 |
Class to handle multiple HTTP requests.
If curl is available, requests will be made concurrently. Otherwise, they will be made serially.
HTTP request maps are arrays that use the following format:
Since 1.35, callers should use HttpRequestFactory::createMultiClient() to get a client object with appropriately configured timeouts.
Definition at line 55 of file MultiHttpClient.php.
MultiHttpClient::__construct | ( | array | $options | ) |
Since 1.35, callers should use HttpRequestFactory::createMultiClient() to get a client object with appropriately configured timeouts instead of constructing a MultiHttpClient directly.
array | $options |
|
Exception |
Definition at line 102 of file MultiHttpClient.php.
MultiHttpClient::__destruct | ( | ) |
Definition at line 616 of file MultiHttpClient.php.
|
protected |
array | &$req | HTTP request map |
-param array{url:string,proxy?:?string,query:mixed,method:string,body:string|resource,headers:string[],stream?:resource,flags:array} $req
array | $opts |
|
Exception |
Definition at line 305 of file MultiHttpClient.php.
References $header, $matches, and $userAgent.
Referenced by runMultiCurl().
|
protected |
array | $opts |
Exception |
Definition at line 433 of file MultiHttpClient.php.
References $cmh, $maxConnsPerHost, and $usePipelining.
Referenced by runMultiCurl().
|
private |
Get a suitable select timeout for the given options.
array | $opts |
Definition at line 591 of file MultiHttpClient.php.
References $connTimeout, $reqTimeout, and TIMEOUT_ACCURACY_FACTOR.
Referenced by runMultiCurl().
|
protected |
Determines if the curl extension is available.
Definition at line 200 of file MultiHttpClient.php.
Referenced by runMulti().
|
private |
Normalize request information.
array[] | &$reqs | the requests to normalize |
Definition at line 546 of file MultiHttpClient.php.
Referenced by runMulti().
MultiHttpClient::run | ( | array | $req, |
array | $opts = [] |
||
) |
Execute an HTTP(S) request.
This method returns a response map of:
array | $req | HTTP request array |
array | $opts |
Definition at line 144 of file MultiHttpClient.php.
References runMulti().
MultiHttpClient::runMulti | ( | array | $reqs, |
array | $opts = [] |
||
) |
Execute a set of HTTP(S) requests.
If curl is available, requests will be made concurrently. Otherwise, they will be made serially.
The maps are returned by this method with the 'response' field set to a map of:
array[] | $reqs | Map of HTTP request arrays |
array | $opts | Options
|
Exception |
Definition at line 177 of file MultiHttpClient.php.
References $connTimeout, $maxConnTimeout, $maxReqTimeout, $reqTimeout, isCurlEnabled(), normalizeRequests(), runMultiCurl(), and runMultiHttp().
Referenced by run().
|
private |
Execute a set of HTTP(S) requests concurrently.
array[] | $reqs | Map of HTTP request arrays |
array | $opts |
|
-param array{connTimeout?:int,reqTimeout?:int,usePipelining?:bool,maxConnsPerHost?:int} $opts
Exception | PhanTypeInvalidDimOffset |
Definition at line 224 of file MultiHttpClient.php.
References getCurlHandle(), getCurlMulti(), and getSelectTimeout().
Referenced by runMulti().
|
private |
Execute a set of HTTP(S) requests sequentially.
array | $reqs | Map of HTTP request arrays |
-param array<int,array{url:string,query:array,method:string,body:string,proxy?:?string,headers?:string[]}> $reqs
array | $opts |
|
Exception |
Definition at line 473 of file MultiHttpClient.php.
References $caBundlePath, $connTimeout, $logger, $proxy, $reqTimeout, and $userAgent.
Referenced by runMulti().
MultiHttpClient::setLogger | ( | LoggerInterface | $logger | ) |
Register a logger.
LoggerInterface | $logger |
Definition at line 612 of file MultiHttpClient.php.
References $logger.
|
protected |
SSL certificates path.
Definition at line 59 of file MultiHttpClient.php.
Referenced by runMultiHttp().
|
protected |
curl_multi_init() handle
Definition at line 57 of file MultiHttpClient.php.
Referenced by getCurlMulti().
|
protected |
Definition at line 61 of file MultiHttpClient.php.
Referenced by getSelectTimeout(), runMulti(), and runMultiHttp().
|
protected |
Definition at line 77 of file MultiHttpClient.php.
Referenced by runMultiHttp(), and setLogger().
|
protected |
Definition at line 71 of file MultiHttpClient.php.
Referenced by getCurlMulti().
|
protected |
Definition at line 63 of file MultiHttpClient.php.
Referenced by runMulti().
|
protected |
Definition at line 67 of file MultiHttpClient.php.
Referenced by runMulti().
|
protected |
|
protected |
Definition at line 65 of file MultiHttpClient.php.
Referenced by getSelectTimeout(), runMulti(), and runMultiHttp().
|
protected |
Definition at line 69 of file MultiHttpClient.php.
Referenced by getCurlMulti().
|
protected |
Definition at line 75 of file MultiHttpClient.php.
Referenced by getCurlHandle(), and runMultiHttp().
|
private |
Definition at line 82 of file MultiHttpClient.php.
Referenced by getSelectTimeout().