Plaas elke Guzzle-taak se proxy op die asinchrone bewerking wat deur die poel begin word. Binne 'n bestaande kliëntopstelling, gebruik beloftefabrieke:

$operations = function () use ($client, $jobs) {
    foreach ($jobs as $id => $job) {
        yield $id => function () use ($client, $job) {
            return $client->requestAsync('GET', $job['url'], [
                'proxy' => $job['proxy'],
                'timeout' => 20,
            ]);
        };
    }
};

$pool = new GuzzleHttp\Pool($client, $operations(), [
    'concurrency' => 4,
]);
$pool->promise()->wait();

Elke gevalideerde taak verskaf 'n bestemming en 'n proxy. Vir 'n toegelate openbare versoek kan 'n HTTP-kandidaat uit die HTTP-proksielys daardie taak se geloofsbriewe-vrye proxy-URL verskaf; die keuse gebeur voordat die fabriek hardloop. 'n PSR-7-versoek beskryf die HTTP-boodskap, terwyl hierdie stuur-opsies die vervoer beheer. Om 'n proxy-waarde langs die boodskap te druk of te stoor, kan nie 'n bewerking opstel wat dit op 'n ander manier stuur nie.

Gee requestAsync() uit die fabriek terug. Om sinchrone request() daar te roep, kan blokkeer terwyl die poel probeer om gelyktydige werk te begin.

Voeg vervulde en verwerpte terugbelroepe by met die toepassing se bestaande hantering. Hou die taaksluetel, die gekose proxy-identifiseerder en die pogingnommer in beide uitkomste; die voltooiingsorde verskil van die invoerorde. Moenie in die geheim 'n ander eindpunt in die fabriek kies nadat een vir die taak aangeteken is nie.

Die gelyktydigheidswaarde beperk hierdie poel se werk. Verskeie take wat een beperkte proxy of rekening kies, kan steeds 'n aparte begroting vir daardie eindpunt vereis.

Interpreteer resultate per stadium: verwerping van die bestemming, proxy-verifikasie en verbindingstydverstreke is verskillende uitkomste. Die stuur-opsies wat by die taak gehou word, wys watter roete elke resultaat opgelewer het.

Verwante artikels