Ilagay ang proxy ng bawat trabahong Guzzle sa async na operasyong sinisimulan ng pool. Sa loob ng umiiral na setup ng client, gumamit ng mga pabrika ng pangako:

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

Bawat beripikadong trabaho ay nagbibigay ng destinasyon at proxy. Para sa pinapayagang pampublikong kahilingan, ang kandidatong HTTP mula sa listahan ng proxy na HTTP ay makapagbibigay ng proxy URL ng trabahong iyon na walang kredensyal; ang pagpili ay nangyayari bago tumakbo ang pabrika nito. Ang kahilingang PSR-7 ay naglalarawan ng mensaheng HTTP, habang ang mga opsyon sa pagpapadala ay kumokontrol sa transportasyon. Ang pag-print o pag-iimbak ng halaga ng proxy sa tabi ng mensahe ay hindi makakakonpigura ng operasyong nagpapadala nito sa ibang paraan.

Ibalik ang requestAsync() mula sa pabrika. Ang pagtawag ng synchronous na request() doon ay maaaring humarang habang sinusubukan ng pool na simulan ang sabay-sabay na trabaho.

Magdagdag ng mga callback para sa natupad at tinanggihang resulta gamit ang umiiral na paghawak ng aplikasyon. Itago ang susi ng trabaho, identifier ng napiling proxy at bilang ng pagtatangka sa parehong resulta; ang pagkakasunod-sunod ng pagtatapos ay naiiba sa pagkakasunod-sunod ng input. Huwag lihim na pumili ng ibang endpoint sa pabrika pagkatapos maitala ang isa para sa trabaho.

Nililimitahan ng halaga ng concurrency ang trabaho ng pool na ito. Maraming trabahong pumipili ng isang limitadong proxy o account ay maaaring mangailangan pa rin ng hiwalay na badyet para sa endpoint na iyon.

Unawain ang mga resulta ayon sa yugto: pagtanggi ng destinasyon, pagpapatunay ng proxy at pag-timeout ng koneksyon ay magkaibang resulta. Ang mga opsyon sa pagpapadala na itinago kasama ng trabaho ay nagpapakita kung aling ruta ang gumawa ng bawat resulta.

Kaugnay na mga artikulo