amphp/postgres

Amp 的异步 PostgreSQL 客户端。

资助包维护!
amphp

v2.0.0 2024-03-10 17:02 UTC

README

AMPHP 是一组为 PHP 设计的事件驱动库集合,考虑到纤程和并发。 amphp/postgres 是一个异步 Postgres 客户端。该库通过在可用的连接池中透明地分发查询来实现并发查询。需要 ext-pgsql(与 PHP 打包)或 pecl-pq

功能

  • 暴露一个非阻塞 API 以并发执行多个 Postgres 查询
  • 透明连接池以克服 Postgres 的基本同步连接协议
  • 支持参数化预处理语句
  • 支持具有提交和回滚事件挂钩的嵌套事务
  • 无缓冲结果以减少大型结果集的内存使用
  • 支持发送和接收通知

安装

此包可以作为 Composer 依赖项安装。

composer require amphp/postgres

要求

注意:pecl-ev 与 ext-pgsql 不兼容。如果您希望使用 pecl-ev 作为事件循环后端,则必须使用 pecl-pq。

文档和示例

预处理语句和参数化查询支持命名占位符以及 ? 和标准数字(例如 $1)占位符。

行值将被转换为相应的 PHP 类型。例如,整数列将在结果行数组中为 int

更多示例可以在 examples 目录中找到。

use Amp\Postgres\PostgresConfig;
use Amp\Postgres\PostgresConnectionPool;

$config = PostgresConfig::fromString("host=localhost user=postgres db=test");

$pool = new PostgresConnectionPool($config);

$statement = $pool->prepare("SELECT * FROM test WHERE id = :id");

$result = $statement->execute(['id' => 1337]);
foreach ($result as $row) {
    // $row is an associative-array of column values, e.g.: $row['column_name']
}

版本控制

amphp/postgres 遵循与其他所有 amphp 包一样的 semver 语义版本规范。

安全

如果您发现任何安全问题,请使用私有安全问题报告者,而不是使用公共问题跟踪器。

许可

MIT 许可证 (MIT)。请参阅 LICENSE 了解更多信息。