Požadavek Guzzle může vypršet při čekání na slot připojení
Nastavte aktivní rozpočty připojení cURL multi na sdíleném handleru a odlište je od kapacity nečinné cache.
Pokud asynchronní požadavek vyprší dříve, než otevře připojení, zkontrolujte aktivní limity transportu i síťové časové limity. libcurl řadí přenosy do fronty, když jsou tyto limity obsazené, a jejich rozpočty časového limitu běží i ve frontě.
Pro sdílený 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žijte pro asynchronní práci a u operací zadejte zamýšlenou volbu proxy. Hodnoty jsou příkladové rozpočty. Pro veřejné požadavky povolené přes veřejného prostředníka nabízí seznam HTTP proxy kandidáty pro proxy URL operací.
| Volba | Rozpočet |
|---|---|
| MAX_TOTAL_CONNECTIONS | Současně otevřená připojení pod multi handlerem |
| MAX_HOST_CONNECTIONS | Připojení k jednomu hostiteli/portu; proxy připojení se počítají proti koncovému bodu proxy |
| MAXCONNECTS | Připojení ponechaná v cache po použití |
Několik webů používajících stejnou proxy automaticky nedostává samostatné kvóty proxy připojení. Kapacita nečinné cache ani neotevírá připojení předem, ani je nečiní zaměnitelnými: opětovné použití závisí na trase, cíli, protokolu a ověření.
Udržujte rozpočet úloh aplikace a případnou kvótu poskytovatele v souladu s těmito transportními rozpočty. Počítají připojení, ne požadavky za sekundu. Zvýšení časového limitu soketu nedokáže určit, zda čas spotřebovala fronta, nebo čekání na síť.