Guzzle Pool: anfon proxy pob tasg i requestAsync
Atodwch opsiynau proxy i bob gweithrediad asyncronig yn lle i neges cais PSR-7 neu ffatri sy'n rhwystro.
Rhowch broxy pob tasg Guzzle ar y gweithrediad asyncronig a gychwynnir gan y pwll. O fewn setup cleient sy'n bodoli eisoes, defnyddiwch ffatrïoedd addewid:
$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();
Mae pob tasg a ddilyswyd yn darparu cyrchfan a phroxy. Ar gyfer cais cyhoeddus a ganiateir, gall ymgeisydd HTTP o'r rhestr proxy HTTP ddarparu URL proxy'r dasg honno heb gymwysterau; mae'r dewis yn digwydd cyn i'w ffatri redeg. Mae cais PSR-7 yn disgrifio neges HTTP, tra bod yr opsiynau anfon hyn yn rheoli'r cludiant. Ni all argraffu neu storio gwerth proxy wrth ochr y neges ffurfweddu gweithrediad sy'n ei anfon mewn ffordd arall.
Dychwelwch requestAsync() o'r ffatri. Gall galw request() yn gydamserol yno rwystro tra bo'r pwll yn ceisio dechrau gwaith cyfochrog.
Ychwanegwch galwadau yn ôl ar gyfer canlyniadau a gyflawnwyd ac a wrthodwyd gan ddefnyddio triniaeth bresennol y rhaglen. Cadwch allwedd y dasg, dynodydd y proxy a ddewiswyd a rhif yr ymgais yn y ddau ganlyniad; mae trefn cwblhau'n wahanol i drefn y mewnbwn. Peidiwch â dewis pen draw arall yn gyfrinachol yn y ffatri ar ôl cofnodi un ar gyfer y dasg.
Mae'r gwerth cydamseredd yn cyfyngu gwaith y pwll hwn. Gall sawl tasg sy'n dewis un proxy neu gyfrif cyfyngedig fod angen cylldeb ar wahân ar gyfer y pen draw hwnnw o hyd.
Dehonglwch ganlyniadau fesul cam: gwrthodiad cyrchfan, dilysu proxy a thoriad amser cysylltiad yw canlyniadau gwahanol. Mae'r opsiynau anfon a gedwir gyda'r dasg yn dangos pa lwybr a gynhyrchodd bob canlyniad.