Guzzle Pool: әр тапсырманың проксиін requestAsync-ке беру
Прокси параметрлерін PSR-7 сұрау хабарламасына немесе блоктайтын фабрикаға емес, әр асинхронды операцияға тіркеңіз.
Әр Guzzle тапсырмасының проксиін пул бастайтын асинхронды операцияға қойыңыз. Бар клиент конфигурациясының ішінде promise фабрикаларын пайдаланыңыз:
$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() шақыру пул қатарлас жұмысты бастауға тырысқанда блоктай алады.
Орындалған және қабылданбаған кері шақыруларды қолданбаның бар өңдеуімен қосыңыз. Тапсырма кілтін, таңдалған прокси идентификаторын және әрекет нөмірін екі нәтижеде де сақтаңыз; аяқталу реті кіріс ретінен өзгеше. Тапсырма үшін біреуін жазып қойғаннан кейін фабрикада жасырын түрде басқа шеткі нүктені таңдамаңыз.
Қатарластық мәні осы пулдың жұмысын шектейді. Бір шектелген проксиді немесе тіркелгіні таңдайтын бірнеше тапсырма әлі де сол шеткі нүкте үшін жеке бюджетті қажет етуі мүмкін.
Нәтижелерді кезеңдер бойынша түсіндіріңіз: мақсаттың қабылданбауы, прокси аутентификациясы және қосылымның күту уақытының бітуі — әртүрлі нәтижелер. Тапсырмамен бірге сақталған жіберу параметрлері қай маршруттың әр нәтижені бергенін көрсетеді.