Guzzle Pool: nodot katra darba starpniekserveri uz requestAsync
Pievienojiet starpniekservera opcijas katrai asinhronai darbībai, nevis PSR-7 pieprasījuma ziņojumam vai bloķējošai rūpnīcai.
Ievietojiet katra Guzzle darba starpniekserveri asinhronajā darbībā, ko sāk pūls. Esošā klienta iestatījumā izmantojiet solījumu rūpnīcas:
$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();
Katrs validētais darbs nodrošina galamērķi un starpniekserveri. Atļautam publiskam pieprasījumam HTTP kandidāts no HTTP starpniekserveru saraksta var nodrošināt šī darba starpniekservera URL bez akreditācijas datiem; atlase notiek pirms tā rūpnīcas izpildes. PSR-7 pieprasījums apraksta HTTP ziņojumu, bet šīs sūtīšanas opcijas kontrolē transportu. Starpniekservera vērtības drukāšana vai glabāšana blakus ziņojumam nevar konfigurēt darbību, kas to sūta citādi.
Atgrieziet requestAsync() no rūpnīcas. Sinhrondas request() izsaukšana tur var bloķēt, kamēr pūls mēģina sākt vienlaicīgu darbu.
Pievienojiet izpildīto un noraidīto rezultātu atzvanus, izmantojot lietojumprogrammas esošo apstrādi. Saglabājiet darba atslēgu, atlasītā starpniekservera identifikatoru un mēģinājuma numuru abos iznākumos; pabeigšanas secība atšķiras no ievades secības. Pēc viena ierakstīšanas darbam slepeni neizvēlieties rūpnīcā citu galapunktu.
Vienlaicības vērtība ierobežo šī pūla darbu. Vairāki darbi, kas izvēlas vienu ierobežotu starpniekserveri vai kontu, joprojām var prasīt atsevišķu budžetu šim galapunktam.
Interpretējiet rezultātus pa posmiem: galamērķa noraidīšana, starpniekservera autentifikācija un savienojuma taimauts ir dažādi iznākumi. Ar darbu saglabātās sūtīšanas opcijas parāda, kurš maršruts radīja katru rezultātu.