Ak asynchrónna požiadavka vyprší pred otvorením pripojenia, skontrolujte aktívne limity transportu aj sieťové časové limity. libcurl zaraďuje prenosy do frontu, keď sú tieto limity obsadené, a ich rozpočty časového limitu plynú ďalej aj vo fronte.

Pre zdieľaný cURL multi handler 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),
]);

Tento klient použite na asynchrónnu prácu a pri operáciách zadajte zamýšľanú voľbu proxy. Hodnoty sú príkladové rozpočty. Pre verejné požiadavky povolené cez verejného sprostredkovateľa ponúka zoznam HTTP proxy kandidátov pre proxy URL operácií.

VoľbaRozpočet
MAX_TOTAL_CONNECTIONSSúčasne otvorené pripojenia pod multi handlerom
MAX_HOST_CONNECTIONSPripojenia k jednému hostiteľovi/portu; proxy pripojenia sa počítajú voči koncovému bodu proxy
MAXCONNECTSPripojenia ponechané v cache po použití

Niekoľko webov používajúcich rovnakú proxy automaticky nedostáva samostatné kvóty proxy pripojení. Kapacita nečinnej cache ani neotvára pripojenia vopred, ani ich nerobí zameniteľnými: opätovné použitie závisí od trasy, cieľa, protokolu a overenia.

Udržujte rozpočet úloh aplikácie a prípadnú kvótu poskytovateľa v súlade s týmito transportnými rozpočtami. Počítajú pripojenia, nie požiadavky za sekundu. Zvýšenie časového limitu soketu nedokáže určiť, či čas spotreboval front alebo čakanie na sieť.

Súvisiace články