0

说我是 PostgreSQL 新手是轻描淡写的。因此,在过去的几天里,我花了很多时间在http://www.php.net/manual/en/ref.pgsql.phphttp://www.postgresql上阅读各种手册.org/docs/9.1/interactive/index.html

我的问题的简短形式:

不同的用户(从不同的 IP 地址登录)是否在后台使用相同的连接到 PostgreSQL 数据库?

问题的长形式:

在给定的 php 脚本中,数据库连接$connection是在脚本的开头附近定义的。然后在整个脚本的其余部分中使用该连接$GLOBALS['connection']。因此,在该脚本中,给定用户只是一遍又一遍地重复使用相同的连接。

从不同位置登录时使用相同脚本的第二个用户也使用连接的单个副本。

从手册(在http://www.php.net/manual/en/function.pg-connect.php):

If a second call is made to pg_connect() with the same connection_string as an existing connection, the existing connection will be returned unless you pass PGSQL_CONNECT_FORCE_NEW as connect_type.

那么,这是否意味着两个用户共享同一个连接(除非PGSQL_CONNECT_FORCE_NEW发送标志)?

4

1 回答 1

3

不,每次运行 php 脚本时 - 除非您使用持久连接或连接池(如pgbouncerpgpool),否则您会建立新连接。

PGSQL_CONNECT_FORCE_NEWflag 意味着如果在一个 php 脚本pg_connect()中使用相同的参数调用两次,除非设置了这个标志,否则你真的得到了一个连接。

于 2013-11-06T05:05:39.633 回答