× 警告!旧版文档已经暂停维护,请查看新版文档。点击前往新版文档

Coroutine\PostgreSQL

编译安装

  • 需要在编译ext-postgresql扩展来开启此功能,源代码:https://github.com/swoole/ext-postgresql
  • 需要确保系统中已安装libpq
  • mac安装完postgresql自带libpq库,环境之间有差异,ubuntu可能需要apt-get install libpq-dev
  • 也可以单独指定libpq库目录如:./configure --with-libpq-dir=/etc/postgresql

使用示例

go(function () {
    $pg = new Swoole\Coroutine\PostgreSQL();
    $conn  = $pg->connect("host=127.0.0.1 port=5432 dbname=test user=root password=");
    if (!$conn){
        var_dump($pg->error);
        return;
    }
    $result = $pg->query('SELECT * FROM test;');
    $arr = $pg->fetchAll($result);
    var_dump($arr);
});

事务处理

go(function () {
    $pg = new Swoole\Coroutine\PostgreSQL();
    $conn  = $pg -> connect ("host=127.0.0.1 port=5432 dbname=test user=root password=");
    $pg -> query('BEGIN');
    $result = $pg -> query('SELECT * FROM test');
    $arr = $pg -> fetchAll($result);
    $pg -> query('COMMIT');

    var_dump($arr);
});

  • lizhe

    这个怎么关闭连接呢,我unset(($pg,$conn),lsof查看进程连接还是在

  • sandea81

    协程Postgresql客户端,为何没有支持事务处理