说我是PostgreSQL的新手是轻描淡写。因此,我在过去几天花了很多时间浏览http://www.php.net/manual/en/ref.pgsql.php和http://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
标志)?
答案 0 :(得分:2)
不,每次运行php脚本时 - 除非您使用persistent connections或连接池(例如pgbouncer或pgpool),否则建立新连接。
PGSQL_CONNECT_FORCE_NEW
标志意味着如果在一个PHP脚本内部使用相同的参数调用两次pg_connect()
,除非设置了此标志,否则您确实有一个连接。