Guzzle zahtjev može isteći dok čeka mjesto za vezu
Postavite aktivne budžete veza cURL multi na dijeljeni handler i razlikujte ih od kapaciteta neaktivnog keša.
Ako asinhroni zahtjev istekne prije otvaranja veze, provjerite aktivne limite transporta kao i mrežne tajmaute. libcurl stavlja prijenose u red kada su ti limiti zauzeti, a njihovi budžeti tajmauta nastavljaju teći dok su u redu.
Za dijeljeni 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),
]);Koristite ovaj klijent za asinhroni rad i na operacijama navedite njegovu predviđenu opciju proxyja. Vrijednosti su primjerni budžeti. Za javne zahtjeve dopuštene kroz javni posrednik, lista HTTP proxyja nudi kandidate za proxy URL-ove operacija.
| Opcija | Budžet |
|---|---|
| MAX_TOTAL_CONNECTIONS | Istovremeno otvorene veze pod multi handlerom |
| MAX_HOST_CONNECTIONS | Veze prema jednom hostu/portu; proxy veze se računaju prema proxy krajnjoj točki |
| MAXCONNECTS | Veze zadržane u kešu nakon upotrebe |
Nekoliko web stranica koje koriste isti proxy ne dobijaju automatski odvojene dozvole za proxy veze. Kapacitet neaktivnog keša niti unaprijed otvara veze niti ih čini zamjenjivim: ponovna upotreba zavisi od rute, odredišta, protokola i autentifikacije.
Držite budžet zadataka aplikacije i eventualnu dozvolu provajdera usklađene s ovim transportnim budžetima. Oni broje veze, a ne zahtjeve u sekundi. Povećanje socket tajmauta ne može utvrditi da li je vrijeme potrošio red ili mrežno čekanje.