2014-09-11 15:04:12 +02:00
2014-09-13 09:48:37 +02:00
2014-09-13 08:22:28 +02:00
2014-09-13 08:22:28 +02:00
2014-09-11 09:50:43 +02:00
2014-09-11 15:04:12 +02:00
2014-09-13 09:38:04 +02:00
2014-09-13 09:23:29 +02:00

InfluxDB PHP SDK

  • Build Status
  • Dependency Status

Send metrics to InfluxDB and query for any data.

Add new points:

$client->mark("app.search", [
    "key" => "this is my search"
]);

Retrieve existing points:

$results = $client->query("select * from app.search");

InfluxDB client adapters

Actually we supports two adapters

  • UDP/IP - in order to send data via UDP (datagram)
  • HTTP JSON - in order to send/retrieve using HTTP (connection oriented)

Using UDP/IP Adapter

Actually "socket" php library is used for UDP/IP adapter

$options = new Options();
$adapter = new UdpAdapter($options);

$client = new Client();
$client->setAdapter($adapter);

Using HTTP Adapter

Actually Guzzle is used as HTTP client library

<?php
$guzzle = new \GuzzleHttp\Client();

$options = new Options();
$adapter = new GuzzleAdapter($guzzle, $options);

$client = new Client();
$client->setAdapter($adapter);

Time Precision write/read queries

You can set the time_precision for query query

$client->mark("app.search", $points, "s"); //points contains "time" that is in seconds
$client->query("select * from app.search", "s"); // retrieve points using seconds for time column

Query InfluxDB

You can query the time series database using the query method.

$influx->query("select * from mine");
$influx->query("select * from mine", "s"); // with time_precision

You can query the database only if the adapter is queryable (implements QueryableInterface), actually GuzzleAdapter.

The adapter returns the json decoded body of the InfluxDB response, something like:

array(1) {
  [0] =>
  class stdClass#1 (3) {
    public $name =>
    string(8) "tcp.test"
    public $columns =>
    array(3) {
      [0] =>
      string(4) "time"
      [1] =>
      string(15) "sequence_number"
      [2] =>
      string(4) "mark"
    }
    public $points =>
    array(1) {
      [0] =>
      array(3) {
        [0] =>
        int(1410545635590)
        [1] =>
        int(2390001)
        [2] =>
        string(7) "element"
      }
    }
  }
}

Database operations

You can create, list or destroy databases using dedicated methods

$client->getDatabases(); // list all databases
$client->createDatabase("my.name"); // create a new database with name "my.name"
$client->deleteDatabase("my.name"); // delete an existing database with name "my.name"

Actually only queryable adapters can handle databases (implements the QueryableInterface)

Install it

Just use composer

php composer.phar require corley/influxdb-sdk:dev-master

Or place it in your require section

{
  "require": {
    // ...
    "corley/influxdb-sdk": "dev-master"
  }
}

Prepare lib dependencies

Use your DiC or Service Locator in order to provide a configured client

<?php

use InfluxDB\Client;
use InfluxDB\Options;
use InfluxDB\Adapter\GuzzleAdapter as InfluxHttpAdapter;
use GuzzleHttp\Client as GuzzleHttpClient;

$options = new Options();
$options->setHost("analytics.mine.domain.tld");
$options->setPort(8086);
$options->setUsername("root");
$options->setPassword("root");
$options->setDatabase("mine");

$guzzleHttp = new GuzzleHttpClient();
$adapter = new InfluxHttpAdapter($guzzleHttp, $options);

$influx = new Client();
$influx->setAdapter($adapter);

$influx->mark("tcp.test", ["mark" => "element"]);
S
Description
No description provided
Readme
446 MiB
Languages
PHP 85.1%
JavaScript 6.6%
Blade 4.3%
CSS 1.8%
Python 1.1%
Other 1%