Si una solicitud asíncrona expira antes de abrir una conexión, revise los límites activos del transporte además de los tiempos de espera de la red. libcurl pone las transferencias en cola cuando esos límites están ocupados, y sus presupuestos de tiempo de espera siguen corriendo mientras están en cola.

Para el controlador cURL multi compartido de 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 el trabajo asíncrono y proporcione su opción de proxy prevista en las operaciones. Los valores son presupuestos de ejemplo. Para solicitudes públicas permitidas a través de un intermediario público, la lista de proxies HTTP ofrece candidatos para las URL de proxy de las operaciones.

OpciónPresupuesto
MAX_TOTAL_CONNECTIONSConexiones abiertas simultáneamente bajo el controlador múltiple
MAX_HOST_CONNECTIONSConexiones a un solo host/puerto; las conexiones de proxy cuentan contra el extremo del proxy
MAXCONNECTSConexiones retenidas en la caché después de su uso

Varios sitios web que usan el mismo proxy no reciben automáticamente cupos separados de conexiones de proxy. La capacidad de la caché inactiva no abre conexiones de antemano ni las hace intercambiables: la reutilización depende de la ruta, el destino, el protocolo y la autenticación.

Mantenga el presupuesto de tareas de la aplicación y cualquier cupo del proveedor coherentes con estos presupuestos de transporte. Cuentan conexiones, no solicitudes por segundo. Aumentar el tiempo de espera del socket no permite saber si consumió el tiempo una cola o una espera de red.

Artículos relacionados