PHP PostgreSQL open/close 连接性能
PHP PostgreSQL open/close connection performance
我是编程新手(尤其是 PHP)。我写的是简单的 PHP 网站。我也使用 PostgreSQL 数据库。
这是我使用数据库的小 class。
class dbWorker {
private static $conString = "host=localhost port=5432 dbname=myDB user=postgres password=root";
public static function execute($sql) {
$db_conn = pg_connect(self::$conString) or die('Could not connect: ' . pg_last_error());
pg_query($sql) or die('Query error: ' . pg_last_error());
pg_close($db_conn);
return;
}
public static function queryOne($sql) {
$allData = self::queryAll($sql);
if ($allData) {
return $allData[0];
}
return null;
}
public static function queryAll($sql) {
$db_conn = pg_connect(self::$conString) or die('Could not connect: ' . pg_last_error());
$qu = pg_query($db_conn, $sql) or die('Query error: ' . pg_last_error());
$retval = [];
while ($data = pg_fetch_object($qu)) {
$retval[] = $data;
}
pg_free_result($qu);
pg_close($db_conn);
if (!empty($retval)) {
return $retval;
}
return null;
}
}
这个用起来还是挺方便的。但是当我在页面上使用此 class 10-20 次时 - 页面加载时间大约需要 5-6 秒。然后我删除了以下行:
pg_free_result($qu);
pg_close($db_conn);
之后,页面加载时间变成了161毫秒。
问题是 - 如何更好地组织这个过程。
我应该这样写吗?
dbWorker::open_connection();
...
all my functions calls (like getComments(), getMessages(), getTasksList() ect.)
...
dbWorker::close_connection();
目前我是新手,正在寻找简单的解决方案。
(提前感谢您的帮助,请原谅我的英语)
我会创建连接一次,执行所有 sql 查询,然后关闭连接。
您可能想创建持久连接,但有相当多的讨论暗示这可能不是一个好主意,我同意这一点。
我是编程新手(尤其是 PHP)。我写的是简单的 PHP 网站。我也使用 PostgreSQL 数据库。 这是我使用数据库的小 class。
class dbWorker {
private static $conString = "host=localhost port=5432 dbname=myDB user=postgres password=root";
public static function execute($sql) {
$db_conn = pg_connect(self::$conString) or die('Could not connect: ' . pg_last_error());
pg_query($sql) or die('Query error: ' . pg_last_error());
pg_close($db_conn);
return;
}
public static function queryOne($sql) {
$allData = self::queryAll($sql);
if ($allData) {
return $allData[0];
}
return null;
}
public static function queryAll($sql) {
$db_conn = pg_connect(self::$conString) or die('Could not connect: ' . pg_last_error());
$qu = pg_query($db_conn, $sql) or die('Query error: ' . pg_last_error());
$retval = [];
while ($data = pg_fetch_object($qu)) {
$retval[] = $data;
}
pg_free_result($qu);
pg_close($db_conn);
if (!empty($retval)) {
return $retval;
}
return null;
}
}
这个用起来还是挺方便的。但是当我在页面上使用此 class 10-20 次时 - 页面加载时间大约需要 5-6 秒。然后我删除了以下行:
pg_free_result($qu);
pg_close($db_conn);
之后,页面加载时间变成了161毫秒。
问题是 - 如何更好地组织这个过程。
我应该这样写吗?
dbWorker::open_connection();
...
all my functions calls (like getComments(), getMessages(), getTasksList() ect.)
...
dbWorker::close_connection();
目前我是新手,正在寻找简单的解决方案。 (提前感谢您的帮助,请原谅我的英语)
我会创建连接一次,执行所有 sql 查询,然后关闭连接。
您可能想创建持久连接,但有相当多的讨论暗示这可能不是一个好主意,我同意这一点。