Vendos proxy-n e çdo pune Guzzle në operacionin asinkron që nis grupi. Brenda një konfigurimi ekzistues klienti, përdor fabrikat e premtimeve:

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

Çdo punë e vërtetuar ofron një destinacion dhe një proxy. Për një kërkesë publike të lejuar, një kandidat HTTP nga lista e proxy-ve HTTP mund të ofrojë URL-në e proxy-t pa kredenciale të asaj pune; përzgjedhja ndodh para se të ekzekutohet fabrika e saj. Një kërkesë PSR-7 përshkruan mesazhin HTTP, ndërsa këto opsione dërgimi kontrollojnë transportin. Shtypja ose ruajtja e një vlere proxy pranë mesazhit nuk mund të konfigurojë një operacion që e dërgon atë në një mënyrë tjetër.

Kthe requestAsync() nga fabrika. Thirrja e request() sinkrone atje mund të bllokojë ndërsa grupi përpiqet të nisë punë të njëkohshme.

Shto kthime për rezultatet e përmbushura dhe të refuzuara duke përdorur trajtimin ekzistues të aplikacionit. Ruaj çelësin e punës, identifikuesin e proxy-t të zgjedhur dhe numrin e provës në të dy rezultatet; rendi i përfundimit ndryshon nga rendi i hyrjes. Mos zgjidh fshehurazi një pikë tjetër fundore në fabrikë pasi një është regjistruar për punën.

Vlera e njëkohshmërisë kufizon punën e këtij grupi. Disa punë që zgjedhin një proxy ose llogari të kufizuar mund të kërkojnë ende një buxhet të veçantë për atë pikë fundore.

Interpreto rezultatet sipas fazës: refuzimi i destinacionit, vërtetimi i proxy-t dhe skadimi i lidhjes janë rezultate të ndryshme. Opsionet e dërgimit të mbajtura me punën tregojnë se cila rrugë prodhoi çdo rezultat.

Artikuj të ngjashëm