2 distinct connections
am 27.05.2006 14:37:06 von Martin Marques
We're working on a project using PHP and PostgreSQL, mainly trying to work=
=20
in an OOP fashion. The project has quite a good amount of code, and a DB=20
Object called DB_Bib that has all the query methods. I also have a generic=
=20
DB object (DB_Main) which has code to establesh the connection, and from=20
which my DB_bib Inerits the DB connection.
The thing is that I made a new class called DB_Debug which also inherits=20
from DB_Main, and is there to have debugging data inserted into a table in=
=20
the database.
I noticed that when the two objects are started (they both call the=20
connection method using the same connection string) php doesn't=20
initiate to distinct connections, but 1 connection within commands from=20
both objects get passed to the DB server.
The problem is that query commands from the DB_Debug object and from the=20
DB_Bib object get mixed up in the same connection, making it deficult to=20
know when to make a commit.
Is there a way to fix this without having to change the connection string?
--
21:50:04 up 2 days, 9:07, 0 users, load average: 0.92, 0.37, 0.18
---------------------------------------------------------
Lic. Mart=EDn Marqu=E9s | SELECT 'mmarques' ||=20
Centro de Telem=E1tica | '@' || 'unl.edu.ar';
Universidad Nacional | DBA, Programador,
del Litoral | Administrador
---------------------------------------------------------
---------------------------(end of broadcast)---------------------------
TIP 6: explain analyze is your friend
Re: 2 distinct connections
am 27.05.2006 15:12:34 von Cornelia Boenigk
Hi Martin
Did you try passing the constant PGSQL_CONNECT_FORCE_NEW to the
Debug-connect?
regards
Conni
---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings
Re: 2 distinct connections
am 27.05.2006 16:39:53 von Martin Marques
On Sat, 27 May 2006, Cornelia Boenigk wrote:
> Hi Martin
>
> Did you try passing the constant PGSQL_CONNECT_FORCE_NEW to the=20
> Debug-connect?
Excelente. I forgot to say that I'm working with PEAR::DB, and just found=
=20
this in DB/pgsql.php:
if (isset($dsn['new_link'])
&& ($dsn['new_link'] == 'true' || $dsn['new_link'] ===
=3D true))
{
if (version_compare(phpversion(), '4.3.0', '>=3D')) {
$params[] =3D PGSQL_CONNECT_FORCE_NEW;
}
}
I always forget to "use the source Luke!" :-)
thanks!
--
21:50:04 up 2 days, 9:07, 0 users, load average: 0.92, 0.37, 0.18
---------------------------------------------------------
Lic. Mart=EDn Marqu=E9s | SELECT 'mmarques' ||=20
Centro de Telem=E1tica | '@' || 'unl.edu.ar';
Universidad Nacional | DBA, Programador,
del Litoral | Administrador
---------------------------------------------------------
---------------------------(end of broadcast)---------------------------
TIP 6: explain analyze is your friend
Re: 2 distinct connections
am 27.05.2006 16:40:30 von Volkan YAZICI
On May 27 09:37, Martin Marques wrote:
> We're working on a project using PHP and PostgreSQL, mainly trying to work
> in an OOP fashion. The project has quite a good amount of code, and a DB
> Object called DB_Bib that has all the query methods. I also have a generic
> DB object (DB_Main) which has code to establesh the connection, and from
> which my DB_bib Inerits the DB connection.
>
> The thing is that I made a new class called DB_Debug which also inherits
> from DB_Main, and is there to have debugging data inserted into a table in
> the database.
>
> I noticed that when the two objects are started (they both call the
> connection method using the same connection string) php doesn't
> initiate to distinct connections, but 1 connection within commands from
> both objects get passed to the DB server.
>
> The problem is that query commands from the DB_Debug object and from the
> DB_Bib object get mixed up in the same connection, making it deficult to
> know when to make a commit.
As Cornelia Boenig suggested, you can force pg_connect() to establish a new
connection on every call. Also if you don't want to exhaust max_connections
limit, you can serialize queries using semaphores (or mutex).
Regards.
---------------------------(end of broadcast)---------------------------
TIP 3: Have you checked our extensive FAQ?
http://www.postgresql.org/docs/faq