So im Guzzle 6 zu unbestimmten gleichzeitige API-Aufrufe, aber eine der Dinge, die ich tun will, verfolgen, welche Array-Wert das Versprechen derzeit verarbeitet wird, seit ich ursprünglich Verarbeiten Sie die API-Aufrufe basierend auf dem Ergebnis der Datenbankabfrage. Und danach möchte ich den Wert zurück in die Datenbank mit allem, was ich zurück von der API bekomme.Verwenden Sie Guzzle 6 Concurrent Call und verfolgen Sie zusätzliche Parameter
use GuzzleHttp\Pool;
use GuzzleHttp\Client;
use GuzzleHttp\Psr7\Request;
$client = new Client();
$requests = function() {
$uri = 'http://127.0.0.1:8126/guzzle-server/perf';
foreach($database_result as $res) {
/*the res array contains
['id' => 'db id', 'query' => 'get query array'];
*/
$url = $uri . '?' . http_build_query($res['query']);
yield new Request('GET', $url);
}
};
$pool = new Pool($client, $requests(), [
'concurrency' => 5,
'fulfilled' => function ($response, $index) {
/**
* HERE i want to be able to somehow
* retrieve the current responses db id
* this way I can obviously update anything
* i want on the db side
*/
},
'rejected' => function ($reason, $index) {
/**
* HERE i want to be able to somehow
* retrieve the current responses db id
* this way I can obviously update anything
* i want on the db side
*/
},
]);
// Initiate the transfers and create a promise
$promise = $pool->promise();
// Force the pool of requests to complete.
$promise->wait();
...
Jede Hilfe mit diesem wäre erstaunlich. Ich möchte Ratschläge erhalten, wie ich diese Situation am besten angehen kann. Ich würde es vorziehen, es auf eine intelligente, logische Weise zu machen.
Vielen Dank für Ihre Hilfe