Ha egy aszinkron kérés lejár, mielőtt kapcsolatot nyitna, vizsgálja meg a szállítási réteg aktív korlátait és a hálózati időtúllépéseket is. A libcurl sorba állítja az átviteleket, amikor ezek a korlátok foglaltak, és az időtúllépési kereteik a sorban állás alatt is tovább futnak.

A Guzzle 7 megosztott cURL multi handleréhez:

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),
]);

Használja ezt a klienst az aszinkron munkához, és adja meg a szándékolt proxy-beállítást a műveleteken. Az értékek példaértékű keretek. A nyilvános közvetítőn keresztül engedélyezett nyilvános kérésekhez a HTTP-proxylista jelölteket kínál a műveletek proxy URL-jeihez.

BeállításKeret
MAX_TOTAL_CONNECTIONSEgyszerre nyitott kapcsolatok a multi handler alatt
MAX_HOST_CONNECTIONSKapcsolatok egyetlen hoszthoz/porthoz; a proxykapcsolatok a proxy végpontja ellen számítanak
MAXCONNECTSA használat után a gyorsítótárban megtartott kapcsolatok

Az ugyanazt a proxyt használó webhelyek nem kapnak automatikusan külön proxykapcsolat-keretet. Az üres gyorsítótár kapacitása sem nyit előre kapcsolatokat, sem nem teszi azokat felcserélhetővé: az újrafelhasználás az útvonaltól, a céltól, a protokolltól és a hitelesítéstől függ.

Tartsa az alkalmazás feladatkeretét és az esetleges szolgáltatói keretet összhangban ezekkel a szállítási keretekkel. Kapcsolatokat számolnak, nem másodpercenkénti kéréseket. A socket időtúllépésének növelése nem tudja megállapítani, hogy sor vagy hálózati várakozás emésztette-e fel az időt.

Kapcsolódó cikkek