是否可以通过PgBouncer池检测到PHP正在连接到PostgreSQL数据库?

时间:2014-06-23 19:43:01

标签: php postgresql pgbouncer

在PHP Web应用程序的管理仪表板页面上,我想显示有关数据库连接的详细信息。根据本地设置,连接可以是直接连接,也可以由PgBouncer代理。是否有可能准确地检测到我连接的是什么?此信息可用于调试。

检查默认端口(6432 vs 5432)是可能的,但显然不可靠。 PgBouncer是否会在连接中注入任何有助于将其与直接连接区分开来的东西?

2 个答案:

答案 0 :(得分:1)

没有直接的方法。 Pgbouncer不会在pg_stat_activity.application_name或其他地方填充此信息。当然,你会在pg_stat_activity.client_addr中看到运行pgbouncer的机器的IP,但它肯定不会意味着它是pgbouncer。将pg_stat_activity与pgbouncer的show clients命令绑定在一起的一种方法 - 这样您就知道了查询的来源,我在另一篇文章中对此进行了描述:Find source of query through pgbouncer 但是它仍然需要后来将php sql进程pid与所有人一起看看连接。

另外 - php可以使用两个连接(任何数量),所以理论上你需要检查每个连接的语句。

答案 1 :(得分:1)

也许另一种方法是根据您的“本地设置”使用不同的访问凭据?通过pgbouncer配置的连接可以使用与直接相同的用户名/密码。这将允许您区分连接。显然取决于您当地的设置当然是否可行。