Skip to content

This simple client permits to execute multiple request in parallel, in a non blocking way.

License

Notifications You must be signed in to change notification settings

cnastasi/async_http_client

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SensioLabsInsight Code Climate Build Status Scrutinizer Code Quality Code Coverage

Async Http Client

This simple client permits to execute multiple request in parallel, in a non blocking way.

Prerequisites

  • composer
  • php >=5.6

Installation

composer require cnastasi\async_http_client

Usage

use AsyncHttpClient\Core\AsyncHttpClient;
use AsyncHttpClient\Core\AsyncHttpClientDefault;
use AsyncHttpClient\Helper\TimeDefault;
use AsyncHttpClient\Logger\AsyncHttpLoggerDefault;
use AsyncHttpClient\Service\AsyncHttpGenericService;


$loop               = \React\EventLoop\Factory::create();
$dnsResolverFactory = new \React\Dns\Resolver\Factory();
$dnsResolver        = $dnsResolverFactory->createCached('8.8.8.8', $loop);
$factory            = new \React\HttpClient\Factory();
$client             = $factory->create($loop, $dnsResolver);
$logger             = new AsyncHttpLoggerDefault(new TimeDefault());

$asyncClient = new AsyncHttpClientDefault($client, $loop, $logger);

$service = new AsyncHttpGenericService('GET', 'http://www.google.it', null, function ($data, $request) {
    // Do something
});

$anotherService = new AsyncHttpGenericService('POST', 'http://www.another.service.com', http_build_query(['postfield1' => 'value']) , function ($data, $request) {
    // Do something more
});

$asyncClient->addService($service);
$asyncClient->addService($anotherService);

$asyncClient->send(); // code execution will block here and the HTTP calls will be dispatched in parallel

// the code execution will continue only after all http calls are dispatched and returned (callback called)
// do other stuff here

Contributing

  1. Fork it!
  2. Create your feature branch: git checkout -b my-new-feature
  3. Commit your changes: git commit -am 'Add some feature'
  4. Push to the branch: git push origin my-new-feature
  5. Submit a pull request :D

History

That's the way how I survived the last Christmas :P

Credits

Thanks to Fabio Lombardo

License

MIT License

About

This simple client permits to execute multiple request in parallel, in a non blocking way.

Resources

License

Stars

Watchers

Forks

Packages

No packages published