2013-03-22 97 views
0

环境池:单独的服务器上的PostgreSQL 9.2,PHP 5.3,Zend框架1连接,使用PHP,Zend框架和PostgreSQL

我执行上几台服务器每分钟数百PHP脚本(从壳推出,还不如WWW服务器的请求)在Zend Framework pdo_pgsql连接到PostgreSQL中使用。平均脚本执行时间大约是15秒,大多数时间他们不使用数据库。现在,每个脚本都在开始时打开数据库连接,并在最后关闭它。它效率低下,所以我决定在执行过程中脚本会关闭并重新打开数据库连接。

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

我说得对不对?如果是的话,你建议使用哪种连接池系统与PHP,Zend Framework(pdo_pgsql适配器)和PostgreSQL?

+1

您是否尝试过使用互联网? - > http://wiki.postgresql.org/wiki/Replication,_Clustering,_and_Connection_Pooling – 2013-03-22 10:43:06

+2

我有PgBouncer和Pgpool的经验。当我用它们进行连接池时,只有我的偏好转到PgBouncer,这更简单。根据我的经验,Pgpool很难安装,而且有点bug,而PgBouncer只是安装并忘记。它是客户不可知论者。它不知道客户端是否是PHP脚本或其他。无论如何它都会提供连接。 – 2013-03-22 11:36:58

+0

尽管同意詹姆斯的评论,感谢您收到您的Pg版本并清楚描述您的情况。 Thankyou努力沟通清楚。 – 2013-03-22 13:06:23

回答

2

PgBouncer非常适合这份工作。如果在会话池模式下使用(默认),它将减少连接开销而不会增加其他不必要的复杂性。更积极的池模式,如事务处理或语句池确实会影响客户端应用程序,所以只有在实际需要时才应使用它们。

正如詹姆斯指出的,可以找到更多的信息on the PostgreSQL wiki