Guzzle užklausa gali baigtis skirtuoju laiku laukdama prisijungimo vietos
Nustatykite aktyvius cURL multi prisijungimų biudžetus bendrame apdorotuve ir atskirkite juos nuo neveiklios podėlio talpos.
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.
| Parinktis | Biudžetas |
|---|---|
| MAX_TOTAL_CONNECTIONS | Vienu metu atidaryti prisijungimai pagal multi apdorotuvą |
| MAX_HOST_CONNECTIONS | Prisijungimai prie vieno hosto/prievado; tarpinio serverio prisijungimai skaičiuojami tarpinio serverio galiniam taškui |
| MAXCONNECTS | Prisijungimai, 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.