ప్రతి Guzzle పని యొక్క ప్రాక్సీని పూల్ ప్రారంభించే అసింక్ ఆపరేషన్‌పై ఉంచండి. ఇప్పటికే ఉన్న క్లయింట్ సెటప్ లోపల, ప్రామిస్ ఫ్యాక్టరీలను ఉపయోగించండి:

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

ధృవీకరించిన ప్రతి పని ఒక గమ్యాన్ని మరియు ఒక ప్రాక్సీని అందిస్తుంది. అనుమతించిన పబ్లిక్ అభ్యర్థన కోసం, HTTP ప్రాక్సీ జాబితా నుండి HTTP అభ్యర్థి ఆ పని యొక్క ఆధారాలు లేని ప్రాక్సీ URL ను అందించగలదు; ఎంపిక దాని ఫ్యాక్టరీ అమలు కాకముందే జరుగుతుంది. PSR-7 అభ్యర్థన HTTP సందేశాన్ని వివరిస్తుంది, ఈ పంపే ఎంపికలు రవాణాను నియంత్రిస్తాయి. సందేశం పక్కన ప్రాక్సీ విలువను ముద్రించడం లేదా నిల్వ చేయడం దానిని మరో విధంగా పంపే ఆపరేషన్‌ను కాన్ఫిగర్ చేయలేదు.

ఫ్యాక్టరీ నుండి requestAsync() తిరిగి ఇవ్వండి. అక్కడ సింక్రోనస్ request() పిలవడం పూల్ ఏకకాల పనిని ప్రారంభించడానికి ప్రయత్నిస్తున్నప్పుడు నిరోధించవచ్చు.

అప్లికేషన్ యొక్క ఇప్పటికే ఉన్న నిర్వహణను ఉపయోగించి నెరవేరిన మరియు తిరస్కరించిన కాల్‌బ్యాక్‌లను జోడించండి. పని కీ, ఎంపిక చేసిన ప్రాక్సీ గుర్తింపు మరియు ప్రయత్న సంఖ్యను రెండు ఫలితాలలో ఉంచండి; పూర్తి క్రమం ఇన్‌పుట్ క్రమానికి భిన్నంగా ఉంటుంది. పని కోసం ఒకటి నమోదు చేసిన తర్వాత ఫ్యాక్టరీలో రహస్యంగా మరో ఎండ్‌పాయింట్ ఎంచుకోకండి.

ఏకకాల విలువ ఈ పూల్ పనిని పరిమితం చేస్తుంది. ఒకే పరిమిత ప్రాక్సీ లేదా ఖాతాను ఎంచుకునే అనేక పనులకు ఇంకా ఆ ఎండ్‌పాయింట్ కోసం వేరే బడ్జెట్ అవసరం కావచ్చు.

ఫలితాలను దశల వారీగా అర్థం చేసుకోండి: గమ్యం తిరస్కరణ, ప్రాక్సీ ప్రామాణీకరణ మరియు కనెక్షన్ సమయం ముగియడం వేర్వేరు ఫలితాలు. పనితో ఉంచిన పంపే ఎంపికలు ఏ మార్గం ప్రతి ఫలితాన్ని ఇచ్చిందో చూపుతాయి.

సంబంధిత వ్యాసాలు