4

私はプログラミング(特にPHP)が初めてです。簡単な PHP サイトを書いています。PostgreSQL データベースも使用します。これは、データベースを操作するための私の小さなクラスです。

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();

今のところ私は初心者で、簡単な解決策を探しています。(あなたの助けを前もって感謝し、私の英語を許してください)

4

1 に答える 1

3

接続を一度作成し、すべての SQL クエリを実行してから、接続を閉じます。

永続的なつながりを作りたくなるかもしれませんが、それはおそらく素晴らしいアイデアではないことを示唆するかなりの議論があり、私も同意します.

于 2015-01-28T18:03:56.327 に答える