En Guzzle-förfrågan kan timeouta medan den väntar på en anslutningsplats
Ställ in cURL multis aktiva anslutningsbudgetar på den delade handlern och skilj dem från den inaktiva cachens kapacitet.
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ällning | Budget |
|---|---|
| MAX_TOTAL_CONNECTIONS | Samtidigt öppna anslutningar under multi-handlern |
| MAX_HOST_CONNECTIONS | Anslutningar till en värd/port; proxyanslutningar räknas mot proxy-slutpunkten |
| MAXCONNECTS | Anslutningar 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.