Skip to content

An asyncronous client for InfluxDB, implemented via ReactPHP.

License

Notifications You must be signed in to change notification settings

stefanotorresi/influxdb-php-async

Repository files navigation

InfluxDB PHP Async

An asyncronous client for InfluxDB, implemented via ReactPHP.

Build Status Latest Stable Version License

Installation

Use Composer

composer require stefanotorresi/influxdb-php-async

Usage

Each client implementation exposes three main methods:

interface AsyncClient
{
    public function query(string $query, array $params = []): Promise;
    public function write(string $payload, array $params = []): Promise;
    public function ping(): Promise;
    /* etc. */
}

The default implementation uses Buzz React and we'll use it throughout the rest of this document.

Here is a basic usage example where we first create a database, then write a line to it:

$client = new ReactHttpClient();

$client
    ->query('CREATE DATABASE test')
    ->then(function($response) use ($client) {
        return $client->write('measure,tag="foo" value="bar"', ['db' => 'test']);
    })
    ->done()
;

$client->run();

Note that you need to run the ReactPHP event loop. If you don't inject your own, a default loop is composed by the client, and can be started via the run method.

This API assumes that you're familiar with ReactPHP promises.

Configuration

These are the default options:

[
    'host'           => 'localhost',
    'port'           => 8086,
    'database'       => '',
    'username'       => '',
    'password'       => '',
    'socket_options' => [],
];

You can change them at instantion time, defaults will be merged with the one passed:

$options = [ 
    'host' => 'influx-db.domain.tld', 
    'socket_options' => [
        'tls' => true,
    ],   
];

$client = new ReactHttpClient($options);

For details about the socket_options key, please refer to react/socket documentation.

Future developments / TO-DO list

  • An UDP client implemented with react/datagram.
  • A QueryBuilder, possibly identical to the one in the official influxdb-php client.
  • A set of response decoders that convert the JSON body from PSR-7 Responses to something more readily consumable.
  • Explore the possibility of merging this package into the official sdk.

License

This package is released under the MIT license.

About

An asyncronous client for InfluxDB, implemented via ReactPHP.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages