crodas/influx-php 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

crodas/influx-php

最新稳定版本:v0.9.1

Composer 安装命令:

composer require crodas/influx-php

包简介

Simple client for InfluxDB

README 文档

README

Simple PHP client for InfluxDB, an open-source, distributed, time series, events, and metrics database with no external dependencies.

InfluxDB > v0.9 support

The 0.2.0 version of this library now supports InfluxDB 0.9. Please note that InfluxDB 0.9 is still pre-release software.

InfluxDB v0.8.X users

Influxdb >=0.9.0 brings many breaking changes to the API. InfluxDB 0.8.X users may use the legacy client by using the 0.1.* series instead. For the documentation, please have a look at the 0.1.* version!

How to install it

The easiest way is to install it via composer

Create a composer.json file with the following contents:

With InfluxDB 0.9 and above:

{
    "require": {
        "crodas/influx-php": "^0.9"
    }
}

With InfluxDB 0.8.*:

{
    "require": {
        "crodas/influx-php": "0.1.*"
    }
}

How to use it

You need to create a client object.

$client = new \crodas\InfluxPHP\Client(
   "localhost" /*default*/,
   8086 /* default */,
   "root" /* by default */,
   "root" /* by default */
);

The first time you should create an database.

$db = $client->createDatabase("foobar");
$client->createUser("foo", "bar"); // <-- create user/password

You can create more users than the default root user.

$client->createUser('username', "password");

Show existing users:

$users = $client->getUsers();

User privileges are controlled by per-databases users. Any user can have 'read', 'write' or 'all' access, represented by the constants InfluxClient::PRIV_READ, InfluxClient::PRIV_WRITE and InfluxClient::PRIV_ALL.

$client->grantPrivilege(InfluxClient::PRIV_ALL, 'database', 'username');

// revoke rights by
$client->revokePrivilege(InfluxClient::PRIV_ALL, 'database', 'username');

The cluster administrator can be set with:

$client->setAdmin('username');

// delete admin righty by:
$client->deleteAdmin('einuser');

Create data is very simple.

$db = $client->foobar;

// single input:
$db->insert("some label", [ 'fields' => array('value' => 2)]); 

// single input; the 'name' identifier will be overwritten by array content:
$db->insert("some label", ['name'=> 'some label', 'fields' => array('value' => 2)]);

// multiple insert, this is better...
// The 'name' field is optional, if not set, the default parameter (here: 'foobar') will be used

$db->insert("foobar", array(
            array('name' => 'lala',   'fields' => array('type' => 'foobar', 'karma' => 25)),
            array(   'fields' => array('type' => 'foobar', 'karma' => 45)),
            ));

It is recommended that you encode most metadata into the series Tags.

$db->insert("foobar",[['tags' => ['type' => 'one'], 'fields' => ['value' => 10]]]);

Now you can get the database object and start querying.

$db = $client->foobar;
// OR
$db = $client->getDatabase("foobar");

foreach ($db->query("SELECT * FROM foo") as $row) {
    var_dump($row, $row->time);
}

If there are multiple result series, a MultipleResultSeriesObject instance will be returned. So if you are not sure about the results of the query, check the type of the returned object.

An example of getting multiple result sets is:

// Here the 'type' value is stored as metadata in the tags entry. So if there are two 'type' tags found, you will get two result series
$result = $db->query("SELECT count(value) FROM test1 where  time >= '2015-01-01T12:00:00Z' and time < '2015-01-02T00:00:00Z' group by time(1h), type");

Please have a look at the DBTest.php class, you will find some more examples there.

统计信息

  • 总下载量: 155.82k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 62
  • 点击次数: 1
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 60
  • Watchers: 5
  • Forks: 26
  • 开发语言: PHP

其他信息

  • 授权协议: BSD-4-Clause
  • 更新时间: 2013-11-12