使用Postgres + PHP的无缓冲查询?

时间:2009-12-11 19:48:11

标签: php sql postgresql

有没有办法从PHP执行针对PostgreSQL的无缓冲查询,或者至少限制驱动程序使用的本地缓冲区的大小?

3 个答案:

答案 0 :(得分:2)

就我所知,从我看到这个时间开始,在PHP上没有使用pgsql驱动程序的无缓冲查询。但是以下代码可以帮助您解决这个问题:

$curSql = "DECLARE cursor1 CURSOR FOR SELECT * FROM big_table";
$con = new PDO("pgsql:host=whatever dbname=whatever", "user", "pass");
$con->beginTransaction(); // cursors require a transaction.
$stmt = $con->prepare($curSql);
$stmt->execute();

$innerStatement = $con->prepare("FETCH 1 FROM cursor1");

while($innerStatement->execute() && $row = $innerStatement->fetch(PDO::FETCH_ASSOC)) {
    echo $row['field'];
}

来源:http://codepoets.co.uk/2014/postgresql-unbuffered-queries/#more-936

答案 1 :(得分:0)

嗯......我发现了一个PHP类belonging to the Flourish (un-)framework,它似乎有一个可以满足你需要的函数。

答案 2 :(得分:0)

不幸的是,PHP pgsql扩展或pdo_pgsql扩展没有无缓冲模式。 Flourish为fDatabase提供了一个unbufferedQuery()方法,但对于PostgreSQL数据库,它使用了扩展的常规查询功能。