How to perform concurrent POST requests with Guzzle?

Viewed 766

I need help in following situation: I have to send POST requests to an API endpoint, which can handle requests simultaneous. But takes time for each. To reduce time, I want to send multiple POST request at a time.

Here are some code fragments:

use GuzzleHttp\Pool as GuzzlePool;
use GuzzleHttp\Client as GuzzleClient;
use GuzzleHttp\Psr7\Request as GuzzleRequest;

[...]

foreach ($aRequestParams as $sRequestParam) {
    $aRequestList[] = new GuzzleRequest('POST', $sRoute,
    [
//    'form_params' => [
//         'jsonString' => $sRequestParam
//      ]
        'body' =>  $sRequestParam
//      'multipart' => [
//           [
//               'name' => 'jsonString',
//               'contents' => $sRequestParam
//           ]
//       ]
     ]
     );
}
$oGuzzlePool = new GuzzlePool(new GuzzleClient(), $aRequestList, [
    'concurrency' => 8,
    'fulfilled' => [$this, 'processFulfilledCallback'],
    'rejected' => [$this, 'processRejectedCallback']
]);

$oPromise = $oGuzzlePool->promise();
$oPromise->wait();

The callback functions are called after request, but there is the POST payload missing. How do I have to configure the GuzzleRequest?

1 Answers
Related