【发布时间】:2013-03-12 04:25:30
【问题描述】:
环境:独立服务器上的 PostgreSQL 9.2、PHP 5.3、Zend Framework 1
我每分钟在几台服务器上执行数百个 PHP 脚本(从 shell 启动,而不是作为 WWW 服务器请求),它们在 Zend Framework pdo_pgsql 与 PostgreSQL 的连接中使用。平均脚本执行时间约为 15 秒,大部分时间他们不使用数据库。现在每个脚本都在开始时打开数据库连接并在结束时关闭它。效率低下,所以我决定脚本在执行期间会关闭并重新打开数据库连接几次。
但重新打开与数据库的连接也效率低下。由于我的 PHP 脚本作为单独的进程(而不是 WWW 服务器工作程序)运行,因此无法使用 PHP 持久连接。在我看来,最好的解决方案是在每台服务器上使用连接池系统,它将为 PHP 脚本存储到 PostgreSQL 的连接。
我说的对吗?如果是,您推荐使用 PHP、Zend 框架(pdo_pgsql 适配器)和 PostgreSQL 的哪个连接池系统?
【问题讨论】:
-
您尝试过使用互联网吗? --> wiki.postgresql.org/wiki/…
-
我有使用 PgBouncer 和 Pgpool 的经验。当我将它们用于连接池时,我只喜欢更简单的 PgBouncer。以我的经验,Pgpool 更难设置并且有些错误,而 PgBouncer 只是设置并忘记。它与客户无关。它不知道客户端是 PHP 脚本还是什么。无论如何,它都会提供连接。
-
尽管同意 James 的评论,但 +1 感谢您提供 Pg 版本并清楚地描述您的情况。感谢您努力清晰地沟通。
标签: php postgresql zend-framework connection-pooling