Una richiesta Guzzle può scadere mentre attende uno slot di connessione
Imposta i budget delle connessioni attive di cURL multi sull'handler condiviso e distinguili dalla capacità della cache inattiva.
Se una richiesta asincrona scade prima di aprire una connessione, controlla i limiti attivi del trasporto oltre ai timeout di rete. libcurl mette in coda i trasferimenti quando questi limiti sono occupati, e i relativi budget di timeout continuano mentre sono in coda.
Per l'handler cURL multi condiviso di 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),
]);Usa questo client per il lavoro asincrono e fornisci la sua opzione proxy prevista sulle operazioni. I valori sono budget di esempio. Per le richieste pubbliche consentite tramite un intermediario pubblico, l'elenco di proxy HTTP fornisce candidati per gli URL proxy delle operazioni.
| Opzione | Budget |
|---|---|
| MAX_TOTAL_CONNECTIONS | Connessioni aperte contemporaneamente sotto l'handler multiplo |
| MAX_HOST_CONNECTIONS | Connessioni verso un solo host/porta; le connessioni proxy contano sull'endpoint del proxy |
| MAXCONNECTS | Connessioni mantenute nella cache dopo l'uso |
Diversi siti web che usano lo stesso proxy non ricevono automaticamente quote separate di connessioni proxy. La capacità della cache inattiva non apre connessioni in anticipo né le rende intercambiabili: il riutilizzo dipende da percorso, destinazione, protocollo e autenticazione.
Mantieni il budget delle attività dell'applicazione e l'eventuale quota del provider coerenti con questi budget di trasporto. Contano connessioni, non richieste al secondo. Aumentare il timeout del socket non può stabilire se è stata una coda o un'attesa di rete a consumare il tempo.