2

関連する MySQL データベースに接続するために PDO を使用するアプリケーションがあります。リクエストが行われるたびに接続文字列を呼び出します。注: 準備済みステートメントを使用します。私の接続文字列メソッド(開発版)は次のようになります...

protected function ConnectionString()
{

    try {
        $dbh = new PDO("mysql:host=".__DB_HOSTNAME.";dbname=".__DB_NAME, __DB_USERNAME, __DB_PASSWORD);

        return $dbh;
    }
    catch(PDOException $e)
    {
        echo $e->getMessage();
        die();
    }
}

最近、アプリのトラフィックが大幅に増加し、アプリが多くの接続を確立できていないことに気付きました。そのため、キャッチは通常よりも多くトリガーされています。これは、データベースに接続するときにアプリがあまり効率的ではないためだと思います。

永続的な接続を実装するのは賢明でしょうか? または、要求される接続が少なくなるようにコードを再構築する必要があります。それとも、MySQL データベースが許可する接続数の問題でしょうか? 最大値は現在 151 に設定されており、これがデフォルトだと思います。

ヘルプやアドバイスをいただければ幸いです。

4

1 に答える 1

2

私は完全なアプリケーションコードを持っていません...しかし、すべてのSQLクエリに対して新しい接続を確立しているようです。もしそうなら-uはDB接続のシングルトンパターンを実現できます。

DB接続を減らす別の方法は、DBHキャッシングを追加することです。セッションに保存するだけで、次の訪問ではすでに有効な接続を使用できます。

于 2012-09-06T12:42:16.183 に答える