php-tdengine

大数据引擎 TDengine 的 PHP 客户端扩展,还支持了 Swoole 协程化。可以运行在传统 PHP 环境和 Swoole 环境下。

编写了在三大操作系统下的编译及测试用例,保证代码的稳定性和可靠性。

环境要求

Windows、Linux、MacOS

PHP >= 7.4

TDengine >= 2.0(已支持 TDengine 3.0)

Swoole >= 4.8 (可选)

编译安装

编译前请先安装 TDengine-client 或者自行编译 TDengine,详见 TDengine 文档:https://www.taosdata.com/cn/documentation/connector

非 Swoole 环境:

phpize && ./configure && make -j && make install

手动指定 tdengine 目录:

phpize && ./configure --with-tdengine-dir=/usr/local/Cellar/tdengine/2.4.0.0 && make -j && make install

--with-tdengine-dir= 后跟上 tdengine 目录。 适用于默认找不到的情况,或者 MacOS 系统用户。

Swoole 环境:

phpize && ./configure --enable-swoole && make -j && make install

启用扩展:

方法一:在 php.ini 中加入 extension=tdengine

方法二:运行带参数 php -dextension=tdengine test.php

PHP 代码编写

所有错误都会抛出异常: TDengineExceptionTDengineException

基本:

use TDengineConnection; // 获取扩展版本号 var_dump(TDengineEXTENSION_VERSION); // 设置客户端选项 TDenginesetOptions([ TDengineTSDB_OPTION_LOCALE => 'en_US.UTF-8', // 区域 TDengineTSDB_OPTION_CHARSET => 'UTF-8', // 字符集 TDengineTSDB_OPTION_TIMEZONE => 'Asia/Shanghai', // 时区 TDengineTSDB_OPTION_CONFIGDIR => '/etc/taos', // 配置目录 TDengineTSDB_OPTION_SHELL_ACTIVITY_TIMER => 3, // shell 活动定时器 ]); // 获取客户端版本信息 var_dump(TDengineCLIENT_VERSION); var_dump(TDenginegetClientInfo()); // 以下值都是默认值,不改可以不传 $host = '127.0.0.1'; $port = 6030; $user = 'root'; $pass = 'taosdata'; $db = null; // 实例化 $connection = new Connection($host, $port, $user, $pass, $db); // 连接 $connection->connect(); // 获取连接参数 $connection->getHost(); $connection->getPort(); $connection->getUser(); $connection->getPass(); $connection->getDb(); // 获取服务端信息 $connection->getServerInfo(); // 选择默认数据库 $connection->selectDb('db1'); // 关闭连接 $connection->close();

查询:

// 查询 $resource = $connection->query($sql); // 支持查询和插入 // 获取结果集时间戳字段的精度,0 代表毫秒,1 代表微秒,2 代表纳秒 $resource->getResultPrecision(); // 获取所有数据 $resource->fetch(); // 获取一行数据 $resource->fetchRow(); // 获取字段数组 $resource->fetchFields(); // 获取列数 $resource->getFieldCount(); // 获取影响行数 $resource->affectedRows(); // 获取 SQL 语句 $resource->getSql(); // 获取连接对象 $resource->getConnection(); // 关闭资源(一般不需要手动关闭,变量销毁时会自动释放) $resource->close();

参数绑定:

// 查询 $stmt = $connection->prepare($sql); // 支持查询和插入,参数用?占位 // 设置表名和标签 $stmt->setTableNameTags('表名', [ // 支持格式同参数绑定 [TDengineTSDB_DATA_TYPE_INT, 36], ]); // 绑定参数方法1 $stmt->bindParams( // [字段类型, 值] [TDengineTSDB_DATA_TYPE_TIMESTAMP, $time1], [TDengineTSDB_DATA_TYPE_INT, 36], [TDengineTSDB_DATA_TYPE_FLOAT, 44.0], ); // 绑定参数方法2 $stmt->bindParams([ // ['type' => 字段类型, 'value' => 值] ['type' => TDengineTSDB_DATA_TYPE_TIMESTAMP, 'value' => $time2], ['type' => TDengineTSDB_DATA_TYPE_INT, 'value' => 36], ['type' => TDengineTSDB_DATA_TYPE_FLOAT, 'value' => 44.0], ]); // 执行 SQL,返回 Resource,使用方法同 query() 返回值 $resource = $stmt->execute(); // 获取 SQL 语句 $stmt->getSql(); // 获取连接对象 $stmt->getConnection(); // 关闭(一般不需要手动关闭,变量销毁时会自动释放) $stmt->close();

字段类型:

参数名称 说明
TDengineTSDB_DATA_TYPE_NULL null
TDengineTSDB_DATA_TYPE_BOOL bool
TDengineTSDB_DATA_TYPE_TINYINT tinyint
TDengineTSDB_DATA_TYPE_SMALLINT smallint
TDengineTSDB_DATA_TYPE_INT int
TDengineTSDB_DATA_TYPE_BIGINT bigint
TDengineTSDB_DATA_TYPE_FLOAT float
TDengineTSDB_DATA_TYPE_DOUBLE double
TDengineTSDB_DATA_TYPE_BINARY binary
TDengineTSDB_DATA_TYPE_TIMESTAMP timestamp
TDengineTSDB_DATA_TYPE_NCHAR nchar
TDengineTSDB_DATA_TYPE_UTINYINT utinyint
TDengineTSDB_DATA_TYPE_USMALLINT usmallint
TDengineTSDB_DATA_TYPE_UINT uint
TDengineTSDB_DATA_TYPE_UBIGINT ubigint
TDengineTSDB_DATA_TYPE_JSON json
TDengineTSDB_DATA_TYPE_VARBINARY varbinary
TDengineTSDB_DATA_TYPE_DECIMAL decimal
TDengineTSDB_DATA_TYPE_BLOB blob
TDengineTSDB_DATA_TYPE_MEDIUMBLOB mediumblob
TDengineTSDB_DATA_TYPE_BINARY binary

版权声明:

1、该文章(资料)来源于互联网公开信息,我方只是对该内容做点评,所分享的下载地址为原作者公开地址。
2、网站不提供资料下载,如需下载请到原作者页面进行下载。
3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考学习用!
4、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。