PHP PostgreSQL 打开/关闭连接性能

标签 php database postgresql pg php-pgsql

我是编程新手(尤其是 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;
    }

}

这个用起来很方便。但是当我在页面上使用此类 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 PostgreSQL 打开/关闭连接性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28198963/

相关文章:

php - 无法在 phpinfo() 中加载 PostgresQL 模块

PostgreSQL 层次结构,类别树

java - Spring Data JPA BigList 插入

django - 多个Postgres SELECT进程(Django GET请求)卡住,导致100%CPU使用率

php - 将 PK 分配给链接

php - FactoryMuffin 中的空值定义

java - 如何在Java中从数据源名称获取sqlserver数据库名称

mysql - 如何在 ubuntu 中使用脚本添加带有连字符的数据库名称

php - 如何在 PHP 类函数中使用 javascript?

mysql - 高效考勤管理系统的数据库架构