1. Go to this page and download the library: Download fansipan/peak library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
fansipan / peak example snippets
use Fansipan\Peak\PoolFactory;
/** @var \Psr\Http\Client\ClientInterface $client */
$pool = PoolFactory::createForClient($client);
use Fansipan\Peak\Concurrency\AmpDeferred;
use Fansipan\Peak\Concurrency\PslDeferred;
use Fansipan\Peak\Concurrency\ReactDeferred;
// AMPHP
$defer = new AmpDeferred();
// PSL
$defer = new PslDeferred();
// ReactPHP
$defer = new ReactDeferred();
use Fansipan\Peak\Client\GuzzleClient;
use Fansipan\Peak\Client\SymfonyClient;
use Fansipan\Peak\ClientPool;
// Guzzle
$asyncClient = new GuzzleClient($defer);
// or using existing Guzzle client
/** @var \GuzzleHttp\ClientInterface $client */
$asyncClient = new GuzzleClient($defer, $client);
// Symfony HTTP Client
$asyncClient = new SymfonyClient($defer);
// or using existing Symfony client
/** @var \Symfony\Contracts\HttpClient\HttpClientInterface $client */
$asyncClient = new SymfonyClient($defer, $client);
$pool = new ClientPool($asyncClient);
use Psr\Http\Client\ClientInterface;
use Psr\Http\Message\RequestInterface;
use Psr\Http\Message\ResponseInterface;
// Using array
$responses = $pool->send([
$psr7Request,
fn (ClientInterface $client): ResponseInterface => $client->sendRequest($psr7Request),
]);
var_dump($responses[0]);
var_dump($responses[1]);
// Using generator when you have an indeterminate amount of requests you wish to send
$requests = static function (int $total) {
for ($i = 0; $i < $total; $i++) {
yield $psr7Request;
}
}
$responses = $pool->send($requests(100));
use Psr\Http\Client\ClientInterface;
use Psr\Http\Message\RequestInterface;
use Psr\Http\Message\ResponseInterface;
$responses = $pool->send([
'first' => $psr7Request,
'second' => fn (ClientInterface $client): ResponseInterface => $client->sendRequest($psr7Request),
]);
// Or using generator
$requests = function (): \Generator {
yield 'first' => $psr7Request;
yield 'second' => fn (ClientInterface $client): ResponseInterface => $client->sendRequest($psr7Request);
};
$responses = $pool->send($requests());
var_dump($responses['first']);
var_dump($responses['second']);
$response = $pool
->concurrent(10) // Process up to 10 requests concurrently
->send($requests);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.