Si una sol·licitud asíncrona expira abans d'obrir una connexió, reviseu els límits actius del transport i també els temps d'espera de la xarxa. libcurl posa les transferències en cua quan aquests límits estan ocupats, i els seus pressupostos de temps d'espera continuen mentre són a la cua.

Per al handler cURL multi compartit 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),
]);

Utilitzeu aquest client per a la feina asíncrona i proporcioneu la seva opció de proxy prevista a les operacions. Els valors són pressupostos d'exemple. Per a sol·licituds públiques permeses a través d'un intermediari públic, la llista de proxy HTTP ofereix candidats per als URL de proxy de les operacions.

OpcióPressupost
MAX_TOTAL_CONNECTIONSConnexions obertes simultàniament sota el handler multi
MAX_HOST_CONNECTIONSConnexions a un sol amfitrió/port; les connexions de proxy compten contra el punt final del proxy
MAXCONNECTSConnexions retingudes a la memòria cau després de l'ús

Diversos llocs que utilitzen el mateix proxy no reben automàticament permisos de connexió de proxy separats. La capacitat de la memòria cau inactiva no obre connexions per endavant ni les fa intercanviables: la reutilització depèn de la ruta, la destinació, el protocol i l'autenticació.

Manteniu el pressupost de tasques de l'aplicació i qualsevol permís del proveïdor coherents amb aquests pressupostos de transport. Compten connexions, no sol·licituds per segon. Apujar un temps d'espera de sòcol no pot identificar si una cua o una espera de xarxa ha consumit el temps.

Articles relacionats