Hvis en asynkron forespørsel utløper før den åpner en tilkobling, undersøk transportens aktive grenser samt nettverkstimeoutene. libcurl setter overføringer i kø når disse grensene er opptatt, og tidsbudsjettene deres fortsetter mens de står i kø.

For Guzzle 7s delte 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),
]);

Bruk denne klienten til det asynkrone arbeidet, og oppgi den tiltenkte proxyinnstillingen på operasjonene. Verdiene er eksempelbudsjetter. For offentlige forespørsler som er tillatt via en offentlig mellommann, gir HTTP-proxylisten kandidater til operasjonenes proxy-URL-er.

InnstillingBudsjett
MAX_TOTAL_CONNECTIONSSamtidig åpne tilkoblinger under multi-handleren
MAX_HOST_CONNECTIONSTilkoblinger til én vert/port; proxy-tilkoblinger telles mot proxy-endepunktet
MAXCONNECTSTilkoblinger som beholdes i bufferen etter bruk

Flere nettsteder som bruker samme proxy får ikke automatisk separate proxy-tilkoblingskvoter. Den ledige buferens kapasitet åpner verken tilkoblinger på forhånd eller gjør dem utskiftbare: gjenbruk avhenger av rute, destinasjon, protokoll og autentisering.

Hold applikasjonens oppgavebudsjett og en eventuell leverandørkvote i samsvar med disse transportbudsjettene. De teller tilkoblinger, ikke forespørsler per sekund. Å øke en socket-timeout kan ikke avgjøre om en kø eller en nettverksventetid brukte tiden.

Relaterte artikler