使用PHP、Zend Framework和PostgreSQL的连接池

使用PHP、Zend Framework和PostgreSQL的连接池,php,postgresql,zend-framework,connection-pooling,Php,Postgresql,Zend Framework,Connection Pooling,环境:独立服务器上的PostgreSQL 9.2、PHP5.3、Zend Framework 1 我每分钟在几台服务器上执行数百个PHP脚本(从shell启动,而不是作为WWW服务器请求),这些脚本在Zend Frameworkpdo_pgsql到PostgreSQL的连接中使用。平均脚本执行时间约为15秒,大部分时间不使用数据库。现在,每个脚本在开始时打开数据库连接,在结束时关闭数据库连接。这是低效的,所以我决定在执行过程中关闭并重新打开db连接几次 但在中重新打开到数据库的连接也是低效的。P

环境:独立服务器上的PostgreSQL 9.2、PHP5.3、Zend Framework 1

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

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

我说得对吗?如果是,您建议在PHP、Zend Framework(
pdo_pgsql
adapter)和PostgreSQL中使用哪个连接池系统?

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


正如詹姆斯指出的那样,您可以找到更多信息。

您尝试过使用互联网吗?-->我有PgBouncer和Pgpool的经验。当我将它们用于连接池时,我的首选是PgBouncer,它更简单。根据我的经验,Pgpool更难设置,而且有点问题,而PgBouncer只是设置并忘记。这是客户不可知论。它不知道客户端是否是PHP脚本或其他什么。尽管同意詹姆斯的评论,+1感谢你的Pg版本和对你情况的清晰描述。感谢您为清晰沟通所做的努力。