1

環境: 別のサーバー上の PostgreSQL 9.2、PHP 5.3、Zend Framework 1

pdo_pgsqlZend Frameworkから PostgreSQL への接続で使用する数百の PHP スクリプト (WWW サーバー要求としてではなく、シェルから起動) を毎分少数のサーバーで実行しています。スクリプトの平均実行時間は約 15 秒で、ほとんどの場合、データベースは使用されません。現在、各スクリプトは最初にデータベース接続を開き、最後に閉じます。非効率なので、実行中にスクリプトがデータベース接続を数回閉じて再度開くことにしました。

しかし、データベースへの接続を再開することも非効率的です。私の PHP スクリプトは別のプロセスとして (WWW サーバーのワーカーとしてではなく) 実行されるため、PHP の永続的な接続を使用することはできません。私の意見では、最善の解決策は、PHP スクリプト用に PostgreSQL への接続を保存する接続プール システムを各サーバーで使用することです。

私は正しいですか?はいの場合、PHP、Zend Framework (pdo_pgsqlアダプター)、および PostgreSQL で使用するために、どの接続プーリング システムをお勧めしますか?

4

1 に答える 1

3

PgBouncerは、この仕事に最適です。セッション プーリング モード (デフォルト) で使用すると、他の不必要な複雑さを追加することなく、接続のオーバーヘッドを削減できます。トランザクション プーリングやステートメント プーリングなどのより積極的なプーリング モードは、クライアント アプリケーションに影響を与えるため、実際に必要な場合にのみ使用してください。

James が指摘しているように、詳細については PostgreSQL wikiを参照してください。

于 2013-03-22T13:05:46.103 に答える