Om en asynkron förfrågan löper ut innan den öppnar en anslutning, undersök transports aktiva gränser samt nätverkstimeout. libcurl köar överföringar när dessa gränser är upptagna, och deras timeoutbudgetar fortsätter medan de står i kö.

För Guzzle 7:s delade cURL multi-handler:

use GuzzleHttp\Client;
use GuzzleHttp\HandlerStack;
use GuzzleHttp\Handler\CurlMultiHandler;

$multi = new CurlMultiHandler([
    'options' => [
        CURLMOPT_MAX_TOTAL_CONNECTIONS => 24,
        CURLMOPT_MAX_HOST_CONNECTIONS => 4,
    ],
]);
$client = new Client([
    'handler' => HandlerStack::create($multi),
]);

Använd den här klienten för det asynkrona arbetet och ange dess avsedda proxyinställning på operationerna. Värdena är exempelbudgetar. För offentliga förfrågningar som tillåts via en offentlig mellanhand ger HTTP-proxylistan kandidater till operationernas proxy-URL:er.

InställningBudget
MAX_TOTAL_CONNECTIONSSamtidigt öppna anslutningar under multi-handlern
MAX_HOST_CONNECTIONSAnslutningar till en värd/port; proxyanslutningar räknas mot proxy-slutpunkten
MAXCONNECTSAnslutningar som behålls i cachen efter användning

Flera webbplatser som använder samma proxy får inte automatiskt separata proxyanslutningskvoter. Den inaktiva cachens kapacitet öppnar varken anslutningar i förväg eller gör dem utbytbara: återanvändning beror på rutt, destination, protokoll och autentisering.

Håll applikationens uppgiftsbudget och eventuell leverantörskvot i linje med dessa transportbudgetar. De räknar anslutningar, inte förfrågningar per sekund. Att höja en socket-timeout kan inte avgöra om en kö eller en nätverksväntan förbrukade tiden.

Relaterade artiklar