Arbeiten mit Guzzle 6 habe ich den Pool/Versprechen Asynchronous mit dem folgenden Code getestet:Vermeiden Pass durch Bezugnahme in Guzzle 6 Asynchrone von Pool
$client = new \GuzzleHttp\Client();
$urls = [];
for($i = 1; $i<10; $i++) {
$urls[] = ''https://httpbin.org/get?id='.$i;
}
$requests = function ($urls){
if(!empty($urls)) {
foreach($urls as $uri){
yield new \GuzzleHttp\Psr7\Request('GET', $uri);
}
}
};
$values = [];
$pool = new \GuzzleHttp\Pool($client, $requests($urls), [
'concurrency' => 5,
'fulfilled' => function ($response, $index) use (&$values){
// this is delivered each successful response
return $values[]=$response->getStatusCode();
},
'rejected' => function ($reason, $index){
// this is delivered each failed request
//dd($reason);
return $reason->getResponse();
},
]);
// Initiate the transfers and create a promise
$promise = $pool->promise();
// Force the pool of requests to complete.
$promise->wait();
var_dump($values);
Gibt es eine Möglichkeit oder ein Refactoring, die mir ermöglichen wird, nicht auf die $ -Werte verweisen und stattdessen die Ergebnisse von $promise->wait();
erhalten?
Wie in gesehen: http://guzzle.readthedocs.io/en/latest/quickstart.html#async-requests
Es gibt einen Weg Versprechen \ Settle zu tun ist, wenn wir den Wert innerhalb des Ergebnisses Array zurückgegeben wird wieder alle abgelehnt Versprechungen und die Wartezeit ignorieren wollen.
Warum sollten Sie '$ passieren Werte "durch Bezugnahme auf den allerersten Platz? – revo
@revo, um die Antwort zurück zu bekommen, da die Funktion die Versprechen in $ Pool zurückgibt. – azngunit81