Ако асинхронна заявка изтече, преди да отвори връзка, проверете активните лимити на транспорта, както и мрежовите таймаути. libcurl поставя трансферите на опашка, когато тези лимити са заети, и техните бюджети за таймаут продължават, докато са на опашката.

За споделения cURL multi handler на 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 handler-а
MAX_HOST_CONNECTIONSВръзки към един хост/порт; прокси връзките се отчитат към прокси крайната точка
MAXCONNECTSВръзки, запазени в кеша след употреба

Няколко сайта, използващи един и същ прокси, не получават автоматично отделни разрешения за прокси връзки. Капацитетът на неактивния кеш нито отваря връзки предварително, нито ги прави взаимозаменяеми: повторното използване зависи от маршрут, дестинация, протокол и удостоверяване.

Поддържайте бюджета на задачите на приложението и всяко разрешение от доставчик в съответствие с тези транспортни бюджети. Те броят връзки, а не заявки в секунда. Увеличаването на таймаута на сокета не може да покаже дали опашка или мрежово изчакване е изразходвало времето.

Подобни статии