Set proxyen til kvar Guzzle-jobb på den asynkrone operasjonen som bassenget startar. Innanfor eit eksisterande klientoppsett brukar du løftefabrikkar:

$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();

Kvar validert jobb gjev ein destinasjon og ein proxy. For ei tillaten offentleg førespurnad kan ein HTTP-kandidat frå HTTP-proxylista gje proxy-URL-en til den jobben utan påloggingsdetaljar; valet skjer før fabrikken køyrer. Ei PSR-7-førespurnad skildrar HTTP-meldinga, medan desse sendevala styrer transporten. Å skrive ut eller lagre ein proxyverdi ved sida av meldinga kan ikkje konfigurere ein operasjon som sender han på ein annan måte.

Returner requestAsync() frå fabrikken. Å kalle synkron request() der kan blokkere medan bassenget prøver å starte samtidig arbeid.

Legg til callbacks for oppfylte og avviste resultat med den eksisterande handteringa til applikasjonen. Hald på jobbnøkkelen, identifikatoren til vald proxy og forsøksnummeret i begge utfall; fullføringsrækkjefølgja er annleis enn inndatarækkjefølgja. Ikkje vel i løynd eit anna endepunkt i fabrikken etter at eitt er registrert for jobben.

Verdien for samtidigheit avgrensar arbeidet til dette bassenget. Fleire jobbar som vel ein avgrensa proxy eller konto kan framleis trenge eit eige budsjett for det endepunktet.

Tolk resultat etter fase: avvising av destinasjon, proxyautentisering og tidsavbrot for tilkopling er ulike utfall. Sendevala som blir haldne med jobben viser kva rute som gav kvart resultat.

Relaterte artiklar