bestit / commercetools-async-pool
Batch-Processing of a pool asynchronous commercetools requests.
Installs: 26 695
Dependents: 2
Suggesters: 0
Security: 0
Stars: 2
Watchers: 2
Forks: 2
Open Issues: 0
Requires
- php: ^7.0
- commercetools/php-sdk: ^1.4 || ^2.0
Requires (Dev)
- phpunit/phpunit: ^5.5
- squizlabs/php_codesniffer: ^2.0
README
Batch-Processing of a pool asynchronous commercetools requests.
Introdction
Commercetools suggests that you use asynchronous requests instead of sequential ones but the PHP SDK makes it not very easy:
- Promises for Client::executeAsync works on the raw guzzle response, not the "requested object".
- Guzzle promise-chaining/forwarding and the AbstractApiResponse from commercetools are not compatible.
So i created a helping pool of async requests. Please review the following information.
Installation
composer require bestit/commercetools-async-pool
API and Usage
$pool = new Pool($this->getClient()); $pool->addPromise(ProductTypeByIdGetRequest::ofId('example')).then( // Success function(ProductType $productType) use ($userdata) { echo $productType->getId(); }, // optional error callback function(ErrorResponse $error) { echo $error->getStatusCode(); } ); //.then(/* chained callbacks */) //.then() // .... // Gets flushed automatically, if we overflow the tick rate from the constructor. $pool->flush();
But beware, do not forget that the callbacks are happening asynchronous! That is no sequential PHP anymore!
Future
- More Unittests