"http://localhost:8086", * "token" => "my-token", * "bucket" => "my-bucket", * "precision" => WritePrecision::NS, * "org" => "my-org", * "debug" => false, * "logFile" => "php://output", * "tags" => ['id' => '1234', * 'hostname' => '${env.Hostname}'], * "timeout" => 2, * "ipVersion" => 6, * ]); * * Client can be configured with following properties: * * - url: InfluxDB server API url (ex. http://localhost:8086). * - token: auth token * - bucket: destination bucket for writes * - org: organization bucket for writes * - precision: precision for the unix timestamps within the body line-protocol * - verifySSL: Turn on/off SSL certificate verification. Set to `false` to disable certificate verification. * - debug: enable verbose logging of http requests * - logFile: log output * - tags: default tags * - timeout: The number of seconds to wait while trying to connect to a server. Use 0 to wait indefinitely. * - proxy: Pass a string to specify an HTTP proxy, or an array to specify different proxies for different protocols. * - allow_redirects: Describes the redirect behavior for requests. * - ipVersion: Specifies which version of IP to use, supports 4 and 6 as possible values (UDP Writer). * * @param array $options */ public function __construct(array $options) { $this->options = $options; } /** * Write time series data into InfluxDB through the WriteApi. * $writeOptions = [ * 'writeType' => methods of write (WriteType::SYNCHRONOUS - default, WriteType::BATCHING) * 'batchSize' => the number of data point to collect in batch * ] * @param array|null $writeOptions Array containing the write parameters (See above) * @param array|null $pointSettings Array of default tags * @return WriteApi */ public function createWriteApi(array $writeOptions = null, array $pointSettings = null): WriteApi { $writeApi = new WriteApi($this->options, $writeOptions, $pointSettings); $this->autoCloseable[] = $writeApi; return $writeApi; } /** * @return UdpWriter * @throws Exception */ public function createUdpWriter(): UdpWriter { return new UdpWriter($this->options); } /** * Get the Query client. * * @return QueryApi */ public function createQueryApi(): QueryApi { return new QueryApi($this->options); } /** * Create an InvokableScripts API instance. * * @return InvokableScriptsApi */ public function createInvokableScriptsApi(): InvokableScriptsApi { /** @var InvokableScriptsService $service */ $service = $this->createService(InvokableScriptsService::class); return new InvokableScriptsApi($this->options, $service); } /** * Get the health of an instance. * * @deprecated Use `ping()` instead * @return HealthCheck */ public function health(): HealthCheck { return (new HealthApi($this->options))->health(); } /** * Checks the status of InfluxDB instance and version of InfluxDB. * * @return array with response headers: 'X-Influxdb-Build', 'X-Influxdb-Version' */ public function ping(): array { $service = $this->createService(PingService::class); $pingWithHttpInfo = $service->getPingWithHttpInfo(); return $pingWithHttpInfo[2]; } /** * Close all connections into InfluxDB */ public function close() { $this->closed = true; foreach ($this->autoCloseable as $ac) { $ac->close(); } $this->autoCloseable = []; } /** * Creates the instance of api service * * @param $serviceClass * @return object service instance */ public function createService($serviceClass) { try { $class = new ReflectionClass($serviceClass); $args = array(new DefaultApi($this->options)); return $class->newInstanceArgs($args); } catch (ReflectionException $e) { throw new RuntimeException($e); } } }