Jei asinchroninė užklausa baigiasi skirtuoju laiku prieš atidarydama prisijungimą, patikrinkite aktyvius transporto limitus ir tinklo skirtąjį laiką. libcurl išrikiuoja perdavimus, kai tie limitai užimti, o jų skirtojo laiko biudžetai teka ir laukiant eilėje.

Guzzle 7 bendram cURL multi apdorotuvui:

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

Naudokite šį klientą asinchroniniam darbui ir operacijose nurodykite numatytą tarpinio serverio parinktį. Reikšmės yra pavyzdiniai biudžetai. Viešosioms užklausoms, leidžiamoms per viešą tarpininką, HTTP tarpinių serverių sąrašas siūlo kandidatus operacijų tarpinių serverių URL adresams.

ParinktisBiudžetas
MAX_TOTAL_CONNECTIONSVienu metu atidaryti prisijungimai pagal multi apdorotuvą
MAX_HOST_CONNECTIONSPrisijungimai prie vieno hosto/prievado; tarpinio serverio prisijungimai skaičiuojami tarpinio serverio galiniam taškui
MAXCONNECTSPrisijungimai, pasiliekantys podėlyje po naudojimo

Keli tinklalapiai, naudojantys tą patį tarpinį serverį, automatiškai negauna atskirų tarpinio serverio prisijungimų kvotų. Neveiklios podėlio talpa nei atidaro prisijungimų iš anksto, nei daro juos pakeičiamus: pakartotinis naudojimas priklauso nuo maršruto, paskirties, protokolo ir autentifikavimo.

Laikykite programos užduočių biudžetą ir bet kokią teikėjo kvotą suderintus su šiais transporto biudžetais. Jie skaičiuoja prisijungimus, o ne užklausas per sekundę. Padidinus lizdo skirtąjį laiką negalima nustatyti, ar laiką sunaudojo eilė, ar tinklo laukimas.

Susiję straipsniai