InfluxDB 是一個開源的時間序列數據庫,專為處理大量時間序列數據而設計。要在 PHP 中執行批量操作,可以使用 InfluxDB 的客戶端庫。目前,InfluxDB 官方提供了一個名為 InfluxDB-PHP 的客戶端庫。
首先,確保已經通過 Composer 安裝了 InfluxDB-PHP 客戶端庫:
composer require influxdb/influxdb
接下來,可以使用以下示例代碼來執行批量操作:
<?php
require 'vendor/autoload.php';
use InfluxDB\Client;
use InfluxDB\Point;
// 創建 InfluxDB 客戶端實例
$client = new Client('http://localhost:8086', 'my-token');
// 創建一個批量寫入點
$points = [
new Point('measurement1')
->setTags(['tag1' => 'value1', 'tag2' => 'value2'])
->setTime戳(time())
->addField('field1', 10)
->addField('field2', 20),
new Point('measurement1')
->setTags(['tag1' => 'value1', 'tag2' => 'value2'])
->setTime戳(time())
->addField('field1', 30)
->addField('field2', 40),
new Point('measurement2')
->setTags(['tag1' => 'value1', 'tag2' => 'value2'])
->setTime戳(time())
->addField('field1', 50)
->addField('field2', 60),
];
// 執行批量寫入操作
try {
$client->writePoints($points);
echo "批量寫入成功!\n";
} catch (Exception $e) {
echo "批量寫入失敗:{$e->getMessage()}\n";
}
// 查詢數據
try {
$response = $client->query("SELECT * FROM measurement1");
echo "查詢結果:\n";
foreach ($response->getPoints() as $point) {
print_r($point);
}
} catch (Exception $e) {
echo "查詢失敗:{$e->getMessage()}\n";
}
// 關閉客戶端
$client = null;
?>
在這個示例中,我們首先創建了一個 InfluxDB 客戶端實例,然后創建了一個包含多個點的數組。這些點具有相同的測量名稱、標簽和時間戳,但字段值不同。接下來,我們使用 writePoints
方法執行批量寫入操作。最后,我們查詢 measurement1
中的數據并打印結果。