thomasvargiu/influxdb-php-async

InfluxDB 的异步 PHP 客户端

0.5.0 2022-04-26 16:08 UTC

This package is auto-updated.

Last update: 2024-08-26 21:12:14 UTC


README

一个异步客户端,用于InfluxDB,通过ReactPHP实现。

这是stefanotorresi/influxdb-php-async的分支。

安装

使用 Composer

composer require thomasvargiu/influxdb-php-async

使用方法

每个客户端实现都公开了三个主要方法

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

默认实现使用 react/http,我们将在本文档的其余部分使用它。

以下是一个基本的使用示例,其中首先创建一个数据库,然后向其中写入一行

$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();

请注意,您需要运行 ReactPHP 事件循环。如果您不注入自己的,则客户端将组成一个默认循环,可以通过 run 方法启动。

此 API 假定您熟悉 ReactPHP promises

配置

这些是默认选项

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

您可以在实例化时更改它们,默认值将与传递的值合并

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

$client = new ReactHttpClient($options);

有关 socket_options 键的详细信息,请参阅 react/socket 文档

未来开发/待办事项列表

  • 使用 react/datagram 实现的 UDP 客户端。
  • 一个 QueryBuilder,可能类似于官方 influxdb-php 客户端中的那个。
  • 一组响应解码器,将 PSR-7 响应的 JSON 主体转换为更易于消费的内容。
  • 探讨将此包合并到官方 SDK 的可能性。

许可

此包在 MIT 许可下发布。