php - 与 PHP、Zend Framework 和 PostgreSQL 的连接池

标签 php postgresql zend-framework connection-pooling

<分区>

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

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

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

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

最佳答案

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

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

关于php - 与 PHP、Zend Framework 和 PostgreSQL 的连接池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15568220/

相关文章:

php - MVC : how to ajax?

php - 从 XSD 生成 PHP 类?

php - 如何使用php创建一个表头在左侧的表格?

postgresql - 中非时间 (CAT) PostgreSQL TIMESTAMPTZ 转换是否存在问题?

postgresql - 后端postgres的测试策略

PHP Youtube Data Api 从另一个域上传

php - 如何在Zend框架2中开发不同布局的前端和后端?

php - 在每个查询中写入数据库名称是否真的比在每次页面加载时调用 mysql_select_db() 更快?

javascript - jquery 预选择 WordPress 网站中的选择选项下拉菜单

python - Django:在外键上不同,然后排序