Guzzle Pool: anna iga töö proxy requestAsyncile
Lisage puhverserveri valikud igale asünkroonsele toimingule, mitte PSR-7 päringusõnumile ega blokeerivale tehasale.
Pange iga Guzzle'i töö puhverserver basseini käivitatud asünkroonsele toimingule. Olemasoleva kliendi seadistuse sees kasutage lubaduste tehaseid:
$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();
Iga valideeritud töö annab sihtkoha ja puhverserveri. Lubatud avaliku päringu jaoks võib HTTP puhverserverite loendist pärit HTTP kandidaat anda selle töö volitusteta puhverserveri URL-i; valik toimub enne, kui selle tehas käivitub. PSR-7 päring kirjeldab HTTP sõnumit, samas kui need saatmisvalikud juhivad transporti. Puhverserveri väärtuse printimine või salvestamine sõnumi kõrvale ei saa seadistada toimingut, mis saadab selle muul viisil.
Tagastage tehasest requestAsync(). Sünkroonse request() kutsumine seal võib blokeerida, kui bassein üritab alustada samaaegset tööd.
Lisage täidetud ja tagasilükatud tulemuste callbackid rakenduse olemasoleva käsitlusega. Hoidke töö võti, valitud puhverserveri identifikaator ja katse number mõlemas tulemuses; lõpetamise järjekord erineb sisestusjärjekorrast. Ärge valige pärast töö jaoks ühe salvestamist tehasest salaja teist lõpp-punkti.
Samaaegsuse väärtus piirab selle basseini tööd. Mitmed tööd, mis valivad ühe piiratud puhverserveri või konto, võivad siiski vajada selle lõpp-punkti jaoks eraldi eelarvet.
Tõlgendage tulemusi etappide kaupa: sihtkoha tagasilükkamine, puhverserveri autentimine ja ühenduse aegumine on erinevad tulemused. Tööga alles hoitud saatmisvalikud näitavad, milline marsruut iga tulemuse andis.