Guzzle Pool: kalo proxy-n e çdo pune te requestAsync
Lidh opsionet e proxy-t me çdo operacion asinkron, jo me mesazhin e kërkesës PSR-7 ose një fabrikë bllokuese.
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.