pg_close必须等待查询结束。

问题描述 投票:0回答:1

我正在做一个注册一个大的CSV数据文件的函数,所以我正在寻找可以发送异步查询到postgre sql server并在之后接收查询结果的方法,我尝试使用pg_send_query来发送SQL(需要时间来查询),如图所示。

SQL

 $sql   = SELECT * FROM BATCH_WORK_TBL WHERE COPR_ID='99999999test';

PHP脚本

//-----------------------------------------------
// DB Conntect
//-----------------------------------------------
$conn = pg_connect('user=username dbname=databasename');

//-----------------------------------------------
// Send asynchronous query
//-----------------------------------------------
$sql = " SELECT * FROM BATCH_WORK_TBL WHERE COPR_ID='99999999test' ";
if (!pg_connection_busy( $conn  )) {
    $res = pg_send_query($conn , $sql ); // pg_send_query return result(true/flase) without wait results
}
pg_close($conn); // pg_close wait until it query return result

然而,当我关闭连接时,pg_close()会等待很长时间,直到查询返回查询结果,所以最后我的php脚本需要很长时间运行。

如果有谁有在posgres sql上用php进行异步查询的经验,你能帮我解决这个问题吗?

php postgresql asynchronous postgresql-9.4 amazon-rds-aurora
1个回答
1
投票

这不能工作。一些 必须保持数据库连接的开放性,这样才能收到查询结果。

你可以保持连接打开,做一些其他工作,稍后再来检查连接,或者你写一个协程,为你做这些等待(并有数据库连接)。

© www.soinside.com 2019 - 2024. All rights reserved.