Uma requisição Guzzle pode expirar enquanto espera por uma vaga de conexão
Defina os orçamentos de conexões ativas do cURL multi no handler compartilhado e distinga-os da capacidade do cache ocioso.
Se uma requisição assíncrona expirar antes de abrir uma conexão, verifique os limites ativos do transporte além dos tempos limite de rede. O libcurl enfileira transferências quando esses limites estão ocupados, e os orçamentos de tempo limite continuam enquanto estão na fila.
Para o handler cURL multi compartilhado do 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),
]);Use este cliente para o trabalho assíncrono e forneça a opção de proxy pretendida nas operações. Os valores são orçamentos de exemplo. Para requisições públicas permitidas por um intermediário público, a lista de proxies HTTP oferece candidatos para as URLs de proxy das operações.
| Opção | Orçamento |
|---|---|
| MAX_TOTAL_CONNECTIONS | Conexões abertas simultaneamente sob o handler múltiplo |
| MAX_HOST_CONNECTIONS | Conexões para um único host/porta; as conexões de proxy contam contra o endpoint do proxy |
| MAXCONNECTS | Conexões retidas no cache após o uso |
Vários sites que usam o mesmo proxy não recebem automaticamente cotas separadas de conexões de proxy. A capacidade do cache ocioso não abre conexões antecipadamente nem as torna intercambiáveis: a reutilização depende de rota, destino, protocolo e autenticação.
Mantenha o orçamento de tarefas da aplicação e qualquer cota do provedor coerentes com estes orçamentos de transporte. Eles contam conexões, não requisições por segundo. Aumentar o tempo limite do socket não identifica se uma fila ou uma espera de rede consumiu o tempo.