En Guzzle-forespørsel kan timeout mens den venter på en tilkoblingsplass
Sett cURL multis aktive tilkoblingsbudsjetter på den delte handleren, og skille dem fra kapasiteten til den ledige hurtigbufferen.
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.
| Innstilling | Budsjett |
|---|---|
| MAX_TOTAL_CONNECTIONS | Samtidig åpne tilkoblinger under multi-handleren |
| MAX_HOST_CONNECTIONS | Tilkoblinger til én vert/port; proxy-tilkoblinger telles mot proxy-endepunktet |
| MAXCONNECTS | Tilkoblinger som beholdes i hurtigbufferen etter bruk |
Flere nettsteder som bruker samme proxy får ikke automatisk separate proxy-tilkoblingskvoter. Kapasiteten til den ledige hurtigbufferen å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.