Weka proksi ya kila kazi ya Guzzle kwenye operesheni isiyo ya moja kwa moja inayoanzishwa na bwawa. Ndani ya usanidi uliopo wa mteja, tumia viwanda vya ahadi:

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

Kila kazi iliyothibitishwa hutoa lengwa na proksi. Kwa ombi la umma lililoruhusiwa, mgombea wa HTTP kutoka orodha ya proksi za HTTP anaweza kutoa URL ya proksi ya kazi hiyo bila vitambulisho; uteuzi hufanyika kabla kiwanda chake hakijafanya kazi. Ombi la PSR-7 linaeleza ujumbe wa HTTP, wakati chaguo hizi za kutuma zinadhibiti usafirishaji. Kuchapisha au kuhifadhi thamani ya proksi kando ya ujumbe hakuwezi kusanidi operesheni inayoituma kwa njia nyingine.

Rudisha requestAsync() kutoka kwa kiwanda. Kupiga request() ya moja kwa moja hapo kunaweza kuzuia wakati bwawa linajaribu kuanza kazi za wakati mmoja.

Ongeza callbacks za matokeo yaliyotimizwa na yaliyokataliwa kwa kutumia ushughulikiaji uliopo wa programu. Hifadhi ufunguo wa kazi, kitambulisho cha proksi iliyochaguliwa na nambari ya jaribio katika matokeo yote mawili; mpangilio wa kukamilisha unatofautiana na mpangilio wa pembejeo. Usichague kwa siri mwisho mwingine kwenye kiwanda baada ya moja kurekodiwa kwa kazi.

Thamani ya utendaji sambamba hupunguza kazi ya bwawa hili. Kazi kadhaa zinazochagua proksi au akaunti moja yenye kikomo zinaweza bado kuhitaji bajeti tofauti kwa mwisho huo.

Tafsiri matokeo kwa hatua: kukataliwa kwa lengwa, uthibitishaji wa proksi na muda wa muunganisho kuisha ni matokeo tofauti. Chaguo za kutuma zilizohifadhiwa na kazi zinaonyesha njia ipi ilitoa kila tokeo.

Makala zinazohusiana