Калі асінхронны запыт сканчаецца па таймаўце да адкрыцця злучэння, праверце актыўныя ліміты транспарту, а таксама сеткавыя таймаўты. libcurl ставіць перадачы ў чаргу, калі гэтыя ліміты занятыя, і іх бюджэты таймаўту працягваюцца, пакуль яны ў чарзе.

Для агульнага cURL multi-апрацоўшчыка 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),
]);

Выкарыстоўвайце гэты кліент для асінхроннай працы і перадайце яго прызначаную опцыю проксі у аперацыях. Значэнні — прыкладныя бюджэты. Для публічных запытаў, дазволеных праз публічнага пасрэдніка, спіс HTTP-проксі дае кандыдатаў для проксі-URL аперацый.

ОпцыяБюджэт
MAX_TOTAL_CONNECTIONSАдначасова адкрытыя злучэнні пад multi-апрацоўшчыкам
MAX_HOST_CONNECTIONSЗлучэнні да аднаго хоста/порта; проксі-злучэнні лічацца супраць проксі-канцавога пункта
MAXCONNECTSЗлучэнні, якія застаюцца ў кэшы пасля выкарыстання

Некалькі сайтаў, якія выкарыстоўваюць адзін проксі, не атрымліваюць аўтаматычна асобных дазволаў на проксі-злучэнні. Ёмістасць прастойнага кэша не адкрывае злучэнні загадзя і не робіць іх узаемазаменнымі: паўторнае выкарыстанне залежыць ад маршруту, прызначэння, пратаколу і аўтэнтыфікацыі.

Трымайце бюджэт задач праграмы і любы дазвол пастаўшчыка ўзгодненымі з гэтымі бюджэтамі транспарту. Яны лічаць злучэнні, а не запыты ў секунду. Павелічэнне таймаўту сокета не дазваляе вызначыць, ці паглынула час чарга, ці чаканне сеткі.

Падобныя артыкулы