1

环境:独立服务器上的 PostgreSQL 9.2、PHP 5.3、Zend Framework 1

我每分钟在几台服务器上执行数百个 PHP 脚本(从 shell 启动,而不是作为 WWW 服务器请求),这些脚本用于 Zend Frameworkpdo_pgsql与 PostgreSQL 的连接。平均脚本执行时间约为 15 秒,大部分时间他们不使用数据库。现在每个脚本都在开始时打开数据库连接并在结束时关闭它。它效率低下,所以我决定脚本将在执行期间关闭并重新打开数据库连接几次。

但是重新打开与数据库的连接也效率低下。由于我的 PHP 脚本作为单独的进程(而不是 WWW 服务器工作程序)运行,因此无法使用 PHP 持久连接。在我看来,最好的解决方案是在每台服务器上使用连接池系统,它将为 PHP 脚本存储到 PostgreSQL 的连接。

我对吗?如果是,您建议将哪种连接池系统与 PHP、Zend 框架(pdo_pgsql适配器)和 PostgreSQL 一起使用?

4

1 回答 1

3

PgBouncer非常适合这项工作。如果在会话池模式(默认)中使用,它将减少连接开销,而不会增加其他不必要的复杂性。更激进的池模式(如事务池或语句池)确实会影响客户端应用程序,因此您应该仅在实际需要时才使用它们。

正如 James 指出的那样,可以在 PostgreSQL wiki 上找到更多信息。

于 2013-03-22T13:05:46.103 回答