Als een asynchroon verzoek verloopt voordat een verbinding wordt geopend, controleer dan de actieve limieten van het transport en ook de netwerktime-outs. libcurl zet overdrachten in de wachtrij wanneer die limieten bezet zijn, en hun time-outbudgetten lopen door terwijl ze in de wachtrij staan.

Voor de gedeelde cURL multi-handler van Guzzle 7:

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),
]);

Gebruik deze client voor het asynchrone werk en geef de bedoelde proxyoptie op de bewerkingen. De waarden zijn voorbeeldbudgetten. Voor openbare verzoeken die via een openbare tussenpartij zijn toegestaan, biedt de HTTP-proxylijst kandidaten voor de proxy-URL's van de bewerkingen.

OptieBudget
MAX_TOTAL_CONNECTIONSGelijktijdig geopende verbindingen onder de multi-handler
MAX_HOST_CONNECTIONSVerbindingen naar één host/poort; proxyverbindingen tellen tegen het proxy-eindpunt
MAXCONNECTSVerbindingen die na gebruik in de cache blijven

Meerdere websites die dezelfde proxy gebruiken, krijgen niet automatisch aparte proxyverbindingsquota. De capaciteit van de lege cache opent niet vooraf verbindingen en maakt ze ook niet uitwisselbaar: hergebruik hangt af van route, bestemming, protocol en authenticatie.

Houd het taakbudget van de applicatie en een eventueel providerquota in overeenstemming met deze transportbudgetten. Ze tellen verbindingen, niet verzoeken per seconde. Een socket-time-out verhogen kan niet vaststellen of een wachtrij of een netwerkwartetijd de tijd heeft verbruikt.

Gerelateerde artikelen