Jos asynkroninen pyyntö vanhenee ennen yhteyden avaamista, tarkista verkon aikakatkaisujen lisäksi siirtokerroksen aktiiviset rajat. libcurl asettaa siirrot jonoon, kun nämä rajat ovat käytössä, ja niiden aikakatkaisubudjetit jatkuvat jonossa ollessa.

Guzzle 7:n jaetulle cURL multi -käsittelijälle:

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

Käytä tätä asiakasta asynkroniseen työhön ja anna sen tarkoitettu välityspalvelinasetus toiminnoille. Arvot ovat esimerkkibudjetteja. Julkisen välittäjän kautta sallituille julkisille pyynnöille HTTP-välityspalvelinluettelo tarjoaa ehdokkaita toimintojen välityspalvelin-URL-osoitteille.

AsetusBudjetti
MAX_TOTAL_CONNECTIONSSamanaikaisesti avoimet yhteydet multi-käsittelijän alla
MAX_HOST_CONNECTIONSYhteydet yhteen isäntään/porttiin; välityspalvelinyhteydet lasketaan välityspalvelimen päätepisteeseen
MAXCONNECTSYhteydet, jotka säilytetään välimuistissa käytön jälkeen

Useat samaa välityspalvelinta käyttävät verkkosivustot eivät saa automaattisesti erillisiä välityspalvelinyhteyskiintiöitä. Käyttämättömän välimuistin kapasiteetti ei avaa yhteyksiä etukäteen eikä tee niistä keskenään vaihdettavia: uudelleenkäyttö riippuu reitistä, kohteesta, protokollasta ja todennuksesta.

Pidä sovelluksen tehtäväbudjetti ja mahdollinen palveluntarjoajan kiintiö yhdenmukaisina näiden siirtobudjettien kanssa. Ne laskevat yhteyksiä, eivät pyyntöjä sekunnissa. Socketin aikakatkaisun nostaminen ei voi kertoa, kuluttiko ajan jono vai verkon odotus.

Aiheeseen liittyvät artikkelit